Wednesday, August 23, 2017
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 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!
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! :)
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.
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!
Tuesday, August 22, 2017
Paradise ponders: total solar eclipse, a new dog, a new (to us) eatery, and feeling punky edition...
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. :)
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.
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
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
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.
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
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!
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
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.
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
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
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!
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! :)
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
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...
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
Paradise ponders: happy-but-sick kitty, “first pressure” on our irrigation pump, sneaky Americanisms, and unlikely bird identification...
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...
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!
Wednesday, August 9, 2017
- 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.
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
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...
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
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. :)