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!


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. :)

Friday, August 4, 2017

This puts the hurt on my eyeballs...

This puts the hurt on my eyeballs...  It's one of the most remarkable optical illusions I've ever seen.  That “spiral” you see at right isn't a spiral at all!  It's a series of concentric circles.  Really!  Trace them out to prove it to yourself!

Excellent little article here explaining the phenomenon.

Sometime back in the Paleozoic Era (circa 1979), I built a device to help a scientist measure spatial resolution in people, at various contrast ratios.  The display of this device was a bunch of vertical bars whose brightness was proportional to the sine of their horizontal position on the screen.  These bars were very similar to the patches described in that linked article.  The device was challenging to build at a low cost back in those days.  Micro computers were nowhere near fast enough to generate the sinusoidal wave in real time, and memory was far too expensive to do what would be obvious today: make a pure graphics display and compute the brightness for each pixel.  So I ended up with a compromise design.  First, by displaying only vertical bars (and physically rotating the display for other orientations) I had the advantage of having the exact same brightness pattern on every raster line.  That meant I needed only enough memory to store the brightness for a single line, and that turned out to be 1k bytes.  I just used the same values in memory for every raster line.  Then instead of computing the sine for every pixel in that memory, I estimated it with a linear interpolation between two points 5 degrees apart.  I further reduced the computation required by using the fact that each quadrant (90 degrees) of the sine is a mirror of the others, so by computing one sine I got three more for only the cost of a few additions and subtractions.  By doing all this I was able to have that device load a new set of values for the display in under a second – which sounds very slow by today's standards, but back then was quite zippy.  It was a good example of the sorts of “tricks” engineers routinely resorted to back then to accommodate the wimpy processors available then.

That instrument had one more interesting little twist.  To generate the raster waveform, I needed a fairly fast 8 bit D/A converter.  Those were only available back then as multi-component modules, fairly large and very expensive.  The state-of-the-art then for D/A converters was the ladder adder, with precision resistors in an “oven” to keep them at a constant temperature.  That was all way more expense and complexity than we wanted in this instrument!  A different approach was definitely needed.  What I came up with was slightly heretical, but perfectly adequate for our needs.  For each of the eight bits of output value I connected a FET switch driving a resistor.  The resistor value for the most significant bit was 1k ohms, and for each bit of lower significance it was about 2.05 times the value of the next most significant bit.  Each of these resistors was actually a simple resistor in series with a trimmer potentiometer, so I could tweak it to the right value.  The other end of these resistors were connected together at the input of an op-amp buffer.  The net effect was a simple analog adder.  By using a multiplier of 2.05 (instead of the 2.0 you'd expect), I had a simple way of guaranteeing the output would monotonically increase as the digital input value increased.  By keeping the design to a simple adder, the circuit was quite fast (though just barely within the capability of the op-amps then available).  The trickiest bit of that circuit turned out to be a sample-and-hold piece that was needed in order to avoid the inevitable settling noise when the digital value was changed.  This set of tricks only worked because precision was less important than monotonicity for this application, but it was fun to be able to take advantage of that.  The entire D/A converter cost about $15 in parts, versus $3,500 or so for the commercial module.  That was really fun!

Thursday, August 3, 2017

Paradise ponders: dogs, Tesla, good eats, and rock man edition...

Paradise ponders: dogs, Tesla, good eats, and rock man edition...  Got my Tesla Model X serviced without incident.  My couple of near-trivial complaints (for instance, the falcon-wing doors squeaked a tiny bit) were dealt with handily.  They found me a bottle of touch-up paint for the dings I've suffered.  When they were finished, they cleaned my car inside and out – looks like new!  I did notice slightly different handling on the drive back home, even more stable and solid than it was before.  I love my Model X. :)

Randy Bingham, the mason who's done such nice work for us, stopped by with a sample of the rock he's recommending for our porches.  It was gorgeous!  It's available up to 4" thick and in slabs big enough to cover every step and landing with a single piece, except for the biggest landing on our front porch.  That one we'll do in three pieces, so that the center piece we'll most commonly walk on will be seamless.  He's putting that rock on order this afternoon.  Slowly – very slowly – our yard is starting to come together...

Randy brought one of his dogs, a little tiny thing named Kate.  She weighs maybe five pounds.  She's usually very skittish of strangers, Randy tells us, but she came right up to both Debbie and I.  Randy was really impressed with that. :)  I spent a half hour or so today just playing with the dogs on our deck; great fun was had by all except Mr. Grump (aka Miki).  He just looked on, all put out, from the most distant corner.

We had a wonderful afternoon meal.  Debbie made her world-famous artichoke chicken, so good it will make your brains fall out.  I failed to take a photo because I didn't want anything to get in the way of stuffing it into my face.  Afterwards we drove up to Aggie's Creamery and had a delicious ice cream cone.  Sometimes our life here feels downright decadent, and in large part that's because of how well we're eating.  We've eaten like kings now for about three years, about half home cooking and half eating out...

First scheduled maintenance...

First scheduled maintenance ... for my Tesla Model X!  We've put 12,500 miles on it since the end of December, and that's the trigger for the first scheduled maintenance.  I made an early morning appointment (8:30) without considering the traffic – only last night did I realize that meant I'd be driving with the rush hour traffic on my way down.  I'm leaving early. :)  It will be interesting to see what they do on this visit...

Wednesday, August 2, 2017

Paradise ponders: wooden stirrup, leaky pipes, and stair rails edition...

Paradise ponders: wooden stirrup, leaky pipes, and stair rails edition...  This morning my brother Scott came by, looking for a bit of help in building some wooden stirrups.  Wooden stirrups?  Why would one want those?  Well, it turns out that people from the town of Newton (where Scott lives) volunteered to build a display for the town, to be shown at this month's Cache County fair.  Scott was one of the volunteers, and he got the job of making wooden stirrups (along with some other stuff).  As I understand it (and I'm not entirely sure I do!), other volunteers are going to combine the wooden stirrups with potatoes, other vegetables, and who knows what else to make ... little potato-head stirrup people.  Exactly why they're doing this remains unexplained.  :)  But making the wooden stirrups (photos below) was fun, mainly because it involved boiling wood for 45 minutes or so to make it bendable.  There was also a bit of a challenge cutting a precise angle on the dowels that make up the hanger on them. They came out rather nicely!


Yesterday morning I tried very hard to fix the leaks in the 2 1/2" galvanized pipe fittings on my irrigation pump.  I tried a total of four different thread treatments (thin Teflon tape, thick Teflon tape, Teflon paste, and old fashioned pipe dope).  None of them worked – I had a drippy leak after using them all.  So I got online and looked up methods to stop leaks in large threaded joints, and found hundreds upon hundreds of posts about it.  Obviously I'm not the first one to face this challenge!  There seemed to be consistent advice that a product called Loctite 565 thread sealant would do the trick.  So I ordered some, and it will be here tomorrow afternoon.  If that doesn't work, then I'm not sure what to do!

After my abject failure at fixing that leak, I went to work installing the stair rails we had made for our sun room stairs (the ones I made earlier this year).  The first step was to drill the holes for the mounting bolts – a little scary, that, as if any of the hole were incorrectly located it would permanently mar those stairs.  The photo at right shows the after-drilling view.  Debbie (who was helping me) was mighty worried about the location of the holes! :)  I thought that after that, all I'd have to do would be to drop the bolts in, tighten the nuts, and I'd be done.  Oh, no, no, no...

First, the powder-coating operation on the rail filled in the holes in the steel plates on the bottom sufficiently that I couldn't insert the bolts at all.  So I had to drill all those out.  Worse, the threads on the bolts weren't long enough to allow the nuts to be tightened.  The bolts were beautifully powder-coated to match the rail, so I couldn't just run out and buy new bolts.  I had to cut an additional 1.5" of thread on each of 12 bolts.  I have a tap & die set, so I'm equipped to do that.  But – cutting that much thread (18" in total) on high quality (so very hard) 3/8" steel bolts was quite a bit of work.  My arms were tired when I got done!  But the end result (at left) was worth it: a beautiful and sturdy rail to go with those stairs.  The finish matches the finish on the basement window well covers.  If you look closely in the photo, you can see Konani poking his head through the cat-hole, checking to see if it's safe for him to come up...

Monday, July 31, 2017

We're back on line...

We're back on line ... with our full gbps bandwidth.  The way that the line was damaged means it can only be repaired by burying a new cable in a new conduit.  It's a long run, too – about 340' – so they're going to bring a contractor with a trenching machine out here to do it.  Normally they're a couple of weeks backlogged, but they're going to try to get them here before we get new sod put down (next week, we hope) in our back yard where the cable has to run.  Meanwhile they laid a temporary connection above ground, and with that we're back on the air.  That above-ground connection is incredibly vulnerable to damage from the sprinkler contractors, me walking around, and the dogs.  I suspect its life expectancy is on the order of a few days...

The sprinkler contractors were here all day connecting water to the inlet of my pump setup (the one I just finished building a few days ago).  We were able to pressurize about half the setup inside my cedar shed this afternoon, and to my delight there were no major leaks.  In fact, at first I thought it wasn't leaking a drop, not even from the three unions that I pressurized.  But with some careful inspection, I found three joints that had minor drips: the three all-steel threaded connections in the entire setup!  All of the PVC joints are perfectly watertight, as are the threaded PVC-to-brass connections, the clamped 1/4" tubing connections, and the PEX crimp connections.  Only the steel-on-steel threaded joints are leaking at all, and they've got a very slow drip (about two drops per minute).  After the system depressurizes, I'll take that joint apart, slather Teflon tape on it, and try again.  It's fortunately perhaps the easiest set of joints in the entire system to work on.  Yay!

Being able to pressurize part of the system also meant that I got two of my pressure gauges pressurized.  At the time I turned it on, we had 30 psi in our supply line (a 6" diameter line provided by the Paradise Pressurized Irrigation Corporation that I'm a shareholder in).  I was surprised by that – judging from how well the sprinklers are currently operating, I was expecting to see something more like 50 psi.

The past couple of days I've put about 10 hours into programming the supervisory computer.  So far it's all in my laptop, in a test harness that I put together.  Large parts of it are up and running right now.  It almost feels dangerous for me to start programming again – it is such a satisfying and enjoyable activity for me that I'm afraid I'll be tempted to neglect other important things going on around here.   I find myself resenting every little thing that drags me off of programming.  In that respect, it's like an addiction.  I'm also a bit surprised just how easily it's all coming back to me.  Not just the programming itself, but also all the skills I'd acquired using my programming tool set, most especially the IDE (I use IntelliJ IDEA by JetBrains).  My little supervisory computer makes extensive use of threading and concurrency, some of the more challenging aspects of programming, and I'm having no trouble at all slipping right back into my concurrent programming groove.  One particular thing I got reasonably good at was holding a mental version of the threading model I was building, and that can get pretty complex – and I can still do that, just as well as ever so far as I can tell.  I must still have at least some little gray cells still functioning!

Screeching halt!

Screeching halt!  That's what happened to our Internet on Saturday morning.  Not until this morning did I figure out what the cause was: our sprinkler contractors rammed a shovel into the plastic conduit that carries the cable under our back yard, and that was enough to create a short in the cable.  We have repair people arriving in an hour or so to fix it.  Meanwhile, I'm restricted to a terrible Internet connection via the hot spot on my iPhone.  It's slow because the signal out here is awful.  Once we're back up I'll make a real post...

Saturday, July 29, 2017

Paradise ponders: plumbing and wildlife edition...

Paradise ponders: plumbing and wildlife edition...  Yesterday and this morning I was fully engaged in finishing the plumbing work that I'm doing for our new irrigation system.  That's all inside the cedar shed we put up a couple months ago. The panorama below shows the west side of that cedar shed, with all the plumbing components in place and plumbed.  The normal photos below that show some of the details.  The first of these shows the pump with its check-valved bypass over the top.  The second shows my gauge array.  The last one shows the fine and coarse filters (but the fine filter isn't fully assembled yet, as we're waiting on a part).  We don't have water hooked up to the cedar shed yet, so I haven't been able to test any of this.  I'll be very sad if I have any bad leaks...



This past week we've made a couple trips back up toward Ant Flats (past Hardware Ranch), we rather spectacularly good wildlife viewing.  On the first of those trips it was early evening on an overcast day, and we saw an amazing variety of birds near Miller's Ranch.  The species I remember include Bullock's orioles, lazuli buntings, yellow warblers, Sandhill cranes, cedar waxwings, a lark (but not a meadowlark), a water bird we don't know walking around on duckweed, a beautiful tiny hawk (falcon-like), and meadowlarks (a pair with a juvenile).  We also saw a doe with a fawn (still spotted).  The next trip was also in the early evening but on a clear day.  We saw very few birds – but we did see three banded kingfishers sitting together in a dead tree, completely ignoring us.  Generally we see kingfishers as solitary examples, and they're very skittish of us.  This was weird!  The best part of that second day, though, was the deer.  We saw about a dozen does with fawns, including six or seven sets of twins.  All of these fawns were roughly the same size (and therefore age), all still spotted, but old enough to graze.  We also spotted a chipmunk (they're rare here, as are all the members of the squirrel family) and a muskrat swimming.


As I write this, it's late morning, and I'm about to jump back into the irrigation system supervisory software...

Thursday, July 27, 2017

Paradise ponders: coding, service, leaks, rain, and kittens edition...

Paradise ponders: coding, service, leaks, rain, and kittens edition...  We had something like a half inch of rain yesterday morning.  Naturally, this was not in the forecast at all!  All the exposed soil in my yard (roughly an acre and a half of it right now) promptly turned into a gooey, sloppy mess – completely stopping all work on the sprinkler system.  Dang it!  Good for the farmers, though...

The contractors who are going to (I hope!) fix all the leaks in our “filling station” will be here today.  This will be the third attempt to put it all together sans leaks.  They're going to try a new thread sealant this time, one that has a reputation for being leak-proof.  We shall see...

Our friend Michelle H. lives a mile or so south of us.  She had a problem with a skunk that was eating the food they put out for their animals, so they put out a trap for it.  They caught something – but it wasn't a skunk.  They got a little feral kitten, perhaps 8 weeks old.  Her son A.J. (the hooded fellow in the photo at right) is a real animal lover.  He donned a thick coat and a pair of leather gloves and went right to work taming down the kitten.  Two days later (this morning), we hear that the kitten is well on its way to becoming a household pet.  :)

I spent a few hours yesterday actually writing some code.  It's been so long since I've done this in earnest that it actually feels rather foreign.  I have a project that's on a sort of deadline: the supervisory computer I mentioned yesterday for my irrigation system.  Yesterday morning I realized that I could actually write large portions of this, and even test it, on my laptop.  All I need is some code that simulates the specialized hardware (pressure sensors, relay output, etc.), and that's pretty darned easy.  So I started working on it, beginning with some code to use the Hydrawise API for their cloud-based interface to my irrigation controller.  Inside of a half hour, I had bits of it working.  It's really kind of amazing how easy the Internet has made things like this!