Wednesday, January 31, 2018

Sisyphus table software...

Sisyphus table software...  I've beaten this stuff into good enough shape that I've released it for public consumption.  I'm calling it “JSisyphus”, following the common Java practice of stuffing a “J” in front of the descriptive name to imply that it's written in Java.  It's in a public repository on GitHub, and licensed with the very permissive MIT license.  If you're a Java-head, and you have a Sisyphus table, go take a look!

The photo at right is a track that I made.  I call it “NestedBubbles”.  It's an example of the sort of recursive pattern that I built JSisyphus to be able to do.  Such patterns are typically very difficult with graphical tools, but easy in software – once you have some sort of framework in place that allows it.  That what JSisyphus does, and that track is the proof of the pudding...

As I've been developing this, I've been in communication with some of the folks at Sisyphus Industries (the makers of the Sisyphus table).  They've offered some help, but much more encouragement, as they're hoping to build a community of Sisyphus table users.  To that end, they've started a subreddit and asked me to contribute on it (which I have).  In the meantime before they get their online community software going, I'm also hosting a repository for Sisyphus table “tracks”, again on GitHub.

This morning I had something quite satisfying happen: an email out of the blue from a programmer who heard about JSisyphus.  He downloaded it and was having trouble making it work.  I answered a few of his questions, and a little while later I got an email from him letting me know that he had succeeded!  So just a couple of days after I let the world know about JSisyphus, it's already being used by someone.  Very cool!

A very nice lunch with our friends...

A very nice lunch with our friends ... Michelle, Lizzy, and Lily (Lizzy's three month old baby).  We had the pleasure of introducing them to one of our favorite spots: Jack's Wood-Fired Oven.  They had been there once previously, but only for dessert.  Yesterday we all had pizza and soup, and then dessert as well.  The soup was one of my favorites there: cream of fire-roasted tomato.  The personal-sized pizzas we chose were all excellent.  When it came to dessert, they were out of our favorite (their lemon cake with raspberries) – so we tried three other desserts and shared them.  One of them, a chocolate layer cake, was made by the same bakery that makes the lemon cake, and it was really good – smooth, moist, and drenched with intense chocolate flavor.  The other two – an Italian pineapple cream confection, and vanilla creme brulee – were made in-house.  Our delightful waitress strongly recommended the pineapple cream dish, so I ordered that (photo above).  The creme brulee I didn't try, as Lizzy was shoveling it into her mouth as fast as she could; I thought sampling it might be dangerous. :)  The pineapple dish was spectacular.  Our waitress has excellent taste!  Lizzy pronounced the creme brulee the equal of any she's had, and it looked nearly identical to our gold standard: the Gastognome's creme brulee.

Great company and great food is a very difficult combination to beat...

Product recommendation...

Product recommendation...  I put six of these little battery-powered lights up in my barn last year.  It's usually before sunrise when I come out to my barn office in the mornings, and these little lights come on automatically to light my path through the storage area of my barn's second floor, between the stair landing and my office door.  Despite being used almost every morning, they're still on their first set of batteries (three AAA cells each).  This week I bought another set of six ($20 for the set), and I put one up on the outside of my barn door.  That's what you see in the photo, lighting up my lock so I can see to put the key in.  These lights make no claim about being suitable for outdoor use, so this is a bit of an experiment.  At just over $3 a light, I'm not risking much. :)

It's remarkable to me just how well these cheap little things work.  They only come on at night, when they're needed – and even then, they only come on when they sense motion.  Generally they pick up my presence when I'm about 12 feet away, which is just about perfect for my needs.  Once they come on, they stay on for 30 seconds or so after they last sense motion.  That means if I hesitate in my walking or fumble for a key, the lights stay on.

Highly recommended!

No blue moon for us...

No blue moon for us...  We've got thick cloud cover, solid, horizon-to-horizon.  Not even a hole to peek through.  It's very light, though, considering that cover – the moon above the clouds must be very bright indeed...

Sunday, January 28, 2018

A squished bug...

A squished bug...  Of the software variety, that is.  My Sisyphus table software had a bug in it that was driving me crazy.  At apparently random times while the software was running, it would generate insane tracks for the table.  I call them “insane” because they didn't resemble in any way what my software commands told it to do.

I spent hours tracking it down to the point where in one function I could add or subtract a line of code and the problem would disappear or reappear.  The thing is, that line of code did essentially nothing – and even worse, adding it caused results before the added line of code to change.  This makes no sense unless one of two things were true: (a) the compiler had a bug, or (b) I didn't really understand what I was looking at.

One of my golden rules of debugging is never assume you have a compiler bug, unless you have proved to yourself at least 15 different ways that it couldn't possibly be something else.  I hadn't done that, so I kept plugging away.

The function I was having the oddball results in computes a transformed position – it applies an offset in Cartesian coordinates, and a rotation in polar coordinates.  After some very careful observation, I noted that when it worked properly, the input angle was about 2E-15 ... very close to zero, but not quite.  When it was working incorrectly, it was exactly zero.  This function called another function that computes an angle from a delta x, delta y pair; that function looked like this:


Spot the problem?  I didn't, at least not right away.  It's in the last line of that function, with the call to Math.signum().  My intent there was to multiply pi by either 1 or -1 ... but Math.signum() can also return zero, if the input is exactly zero.  Bingo!  The fix was simple: I wrote my own “sign()” function that returns only +1 or -1 and changed the function as below:


Presto!  Problem gone.

And it was not a compiler bug.  :)

Friday, January 26, 2018

Bananas, wireless charging, and plastic paper...

Bananas, wireless charging, and plastic paper...  Feeding banana slices to our five dogs is one of my daily joys.  We've been doing this long enough now that the dogs have integrated it into their notion of what a day is “supposed” to be.  They even know the particulars: the “proper” time to receive their daily banana slices is while my tea is steeping.  They watch for this, and when the see the right cues they start getting excited.  One or two of them will usually go sit by the island where we stash the bananas, and stare fixedly at them, occasionally glancing at me to see if I'm paying attention.  If I should do something wrong, like, say, sitting down to drink my tea without having dispensed the bananas, they'll be all over me with the sad looks, the touches for attention, etc.  Very effective, they are! :)  When I finally (from their perspective) walk over and pick up two bananas, then they really get excited!  They'll surround me while I'm at the sink peeling the bananas, always in the same relative positions.  Cabo will be behind me, grabbing at my belt; Mako and Miki to my left, Race and Ipo to my right.  Then I take the peeled bananas over to the biggest section of clear floor in our kitchen, which (so far as the dogs are concerned) is The Place of Banana Dispersal.  There I stand with my back to a cabinet, and the dogs array themselves before me in a semicircle – again, always with each dog in a particular place.  Then I cut slices, a quarter inch or so thick, and toss them out in sequence to the arrayed canines.  The way they react, you'd think I was tossing out chunks of steak!

We're still learning all the new features on our iPhone Xs.  One of those is the wireless charging.  I got two wireless chargers, and Debbie and I each have one on our nightstand.  They work.  I'm not sure how quickly they charge, but they do what we care about: put a phone with an empty battery on the charging stand at night, and in the morning when you wake up it's fully charged.  I'm a little surprised just how convenient I find it.  I used to fuss about every night searching for the end of the charging cable, often having to untangle it from other wires nearby.  Probably one night out of five I'd forget it, and have a half-dead phone the next day.  The little connector was fiddly; you had to align it just so before pushing it in, and it was easy to mistakenly slide the connector between the phone and the case.  With the wireless charging, I just put the phone down on my nightstand and it gets charged.  There's no careful alignment needed; setting it down pretty much anywhere on the charger works fine.  It's a little thing, but quite nice...

I was a Kickstarter supporter of the Remarkable tablet.  I got mine a couple of months ago, and I've been using it daily ever since.  These folks got enough things right about this that for the very first time I have stopped using paper-and-pencil for anything.  The “feel” of it is the most important part they got right.  Unlike any other electronic device I've ever tried sketching on, this one really does feel much like paper, right down to the scratching of the “pencil” tip over the “paper”.  It isn't perfect, but it's darned close, and close enough.  A second thing they got right is simplicity.  Using the table is not like using a drawing program, which is what every other device I've ever tried did.  Instead, these folks made it work as much like paper as they could.  You choose your drawing instrument (pencil, felt-tip, pen, etc.) and a few details (like the line width, angle of the pencil, etc.) and then you just use their stylus as though it was that instrument.  That's it!  You've got essentially an infinite number of pages to work with in the device's memory.  The best part, for me at least, is I can send any sketch I want to keep to a file on my Mac.  So, for instance, if I sketch out an electronic design I can zap it to my Mac and print it out.  Very nice!

I'm a big sketcher, though I can't draw anything that anyone would ever recognize. :)  In my recent work on the Sisyphus table software, I've made probably 100 or more sketches.  Generally these have been geometry problems that I'm trying to figure out how to solve with trigonometry.  It's much easier for me to understand the problem when I can visualize it, hence the sketches.  I don't save any of these – I make the sketch, I write and debug the software, then I just delete the sketch.  In the past when I worked on software like this, my desk would be surrounded by discarded, crumpled paper – something my workmates used to tease me about.  Those days are now gone...

Wednesday, January 24, 2018

Newbie mistake...

Newbie mistake...  Yesterday afternoon, after transferring our old phone information to our new iPhone Xs, we did a few tests.  One of them was to call each other, to make sure the phones were working.  As we did this, we were both holding our phones, standing right next to each other.  I called Debbie, and the ringer volume was really low – even though we had it cranked all the way up.  She called me, and we got the same result.  I spent a good fifteen minutes cruising through the settings, thinking there must be some new setting that for some reason defaulted to a low ringer volume.  Couldn't find a darned thing.

So to Google I went, and I found plenty of people complaining of the same thing.  However, the first ten or so posts I read covered only the same settings that I'd already checked.  Dang it!  Finally I read a post that mentioned an “attention-aware” setting associated with the new face ID on the iPhone X.  It suggested turning that feature off would raise the volume.  But that made me wonder what the heck that feature was ... and after a bit more searching and reading I finally understood it.  The iPhone X is knows if you're paying attention to it – and in that circumstance, it lowers the volume of the ringer and alerts.  Debbie and I were both staring at our phones when we ran the test, so the phones knew it and lowered the volume.  I put my phone in my pocket and had Debbie call me, and sure enough, the ringer volume was nice and loud.

That's a ... really nice feature, actually.  There's no reason for a loud ringer if I'm already staring at the phone.  We left the setting alone.

BTW, the face ID is so far working quickly and flawlessly for me.  Debbie can't use it to get into my phone, and vice versa.  When I pick up my phone, the face ID is so fast that I really don't even notice it – my phone “just works”.  I'm used to typing in a 6-digit PIN every time I pick up my phone; that's going to take a while to get out of that habit. :) 

Buying a “real” camera is starting to look silly...

Buying a “real” camera is starting to look silly...  Debbie and I just got our new iPhone Xs.  I spent a few minutes this morning playing with the camera on mine.  The iPhone Xs are replacing our old iPhone 6+s, and there has been considerable improvement in the camera over that time.  We thought the cameras were great on the iPhone 6+, but the iPhone X just blows that away.

The two photos below were taken from the same point, roughly 18" above my Sisyphus table.  The left-hand photo was taken with the zoom set at 1x, the right-hand at 10x.  Those lines that are so close together on the right-hand photo are roughly 0.4mm apart, about a 50th of an inch.  These photos were both taken hand-held, so especially with the zoomed-in photo you can tell the optical stabilization was working great. 


The three photos below were taken from the same point with 1x, 4x, and 10x zoom settings (left to right).  With these, the graininess introduced by the digital zoom (the optical zoom is limited to 2x) is much more evident – but only if you embiggen the photo.  They're still perfectly usable, and very nicely stabilized.  I should note that these three photos were taken with quite low light; with more light they'd be sharper, of course.


Getting a “real” camera these days involves tradeoffs, and more than just cost.  Compared with the convenience of my iPhone, and the fact that it is always at hand, the “real” camera means:
  • I have an extra thing to carry (and remember)
  • It's more difficult to use, meaning many quick, spontaneous photos simply wouldn't be taken
  • The workflow for a camera is completely different (and more complex) than that of the iPhone
I currently own a really nice Fuji X-1 camera, along with a decade-old Canon system.  I haven't taken either camera from its bag for over a year.  And that's with the iPhone 6+ as the alternative!

I've been a photographer since the late '60s, when I bought (first) a used TLR from the '40s, and then my beloved Minolta SRT-101.  From then up to about five years ago, I owned a succession of improving cameras – both film and digital.  I've spent many, many hours reading camera reviews, understanding the technology, and lusting for whatever the current leading edge in cameras was.  But starting a few years ago – ironically, just as I was able to afford those leading edge cameras – I started to wonder whether I actually wanted one.  Are they worth the extra cost, hassle, and complexity for those very few occasions when I wanted to take a photo that my camera simply couldn't do? 

Now I look at the capability of the iPhone X, and consider that this continuous improvement doesn't seem likely to stop, and I conclude ... no, I don't want to buy a “real” camera.  I think I'll stick with my always-with-me, ridiculously-easy-to-use iPhone camera – and smile every time they make an improvement...

Tuesday, January 23, 2018

Trigonometry...

Trigonometry...  Lots of trigonometry!  The past week or so I've been heads-down on making my Sisyphus table software work better, and to add some more drawing primitives to it.  I keep running into issues that can best be solved with trigonometry: laws of sines, laws of cosines, Heron's formula, etc.  At the same time, I keep running into interesting corner cases involving trigonometry, which often requires me to solve the same problem either two or four time, to handle all the possible variations of the problem as it is rotated through 360°.  I haven't done this much trigonometry since high school!

Yesterday I got to know Heron's formula (to find the area of a triangle) far better than I've ever known it before.  I can now tell you with great precision all the possible pitfalls of using Heron's formula in a computational scenario.  I've also managed to use numbers large enough and small enough to challenge the ability of double floating point precision to represent them – and I can tell you about the limitations of Java's built-in trigonometric functions when the arguments are such numbers.  Fun!

Sunday, January 21, 2018

Like a good British detective story?

Like a good British detective story?  I do, as does Debbie.  Between the two of us, we've probably read some or all of the oeuvre of every British detective story author of the past 150 years.   I have a new favorite, though.  I've just finished the second of Robert Galbraith's “Cormoran Strike” series.  I'm about to start the third.  The first two were simply wonderful.  They don't suffer from any of the usual deficiencies in character development, plot continuity, or implausible dialog that plague most works in that genre.  These are detective stories that can legitimately be called literature, and the first two had me riveted from the first page.

I haven't mentioned something that is perhaps the most surprising aspect of these novels.  “Robert Galbraith” is a nom de plume – the author's actual name is ... J. K. Rowling, of Harry Potter fame.  You might be excused for immediately thinking that the Cormoran Strike novels are juvenile or young adult fare, but they are not – they are decidedly adult books.  In fact, if you have kids I suspect you really wouldn't want them reading these. 

Highly recommended!

Saturday, January 20, 2018

I've got the government shutdown blues...

I've got the government shutdown blues...  No, not really. :)  If I don't look too hard at the details, I kind of like the idea of the government being shut down – because it means they're spending less money.  Not no money, because the government's idea of “shutdown” is more like “slow down by 3%” than anything a normal person would call shutdown.  But hey, wasting 3% less of my money is better than not doing so!

Anyone under 40 years old or so may not realize that there was a day when the U.S. government never did shut down.  The first one happened in 1980.  They've been coming with increasing frequency in the past few years, as the two political parties play their brinkmanship games.  They're one of the more obvious symptoms of our broken polity, and every time I'm reminded of that (as this morning), I get to pondering about the tiny role that the ideals this country was founded on play in our current federal government.  You'd need a powerful microscope to find an ideal anywhere within a mile of most senators or representatives.  That's very sad, for me, at least, and that's from whence arise my blues this morning...

The past few days I've been hugely enjoying the fruits of Debbie's last baking spree: the most wonderful lemon ricotta cookies (at right).  This batch we're actually keeping, instead of giving them away.  There are a dozen or so left in our freezer.  I'm having two each morning with my tea, so they'll last for a while.  The ricotta makes the cookies moist and soft, while still having a pleasing body.  They are lemony throughout, but there's a dollop of lemon frosting (the off-white stuff) on top of each cookie, and a sprinkle of yellow sugar crystals.  The sweetness is perfect for me: just enough to offset the tang of the lemon, without overpowering it.  They are so good!

We woke up this morning to about 3" of wet, gloppy snow – and we've had another inch since.  The snowfall appears to be petering out, so I'll likely be out plowing and shoveling shortly.  Oh, joy.  :)

Meanwhile, I've been working away on my Sisyphus table software, and I've made some nice progress.  I've got the code in good enough shape now that I've published the GitHub repository for anyone who would like to use it.  I've licensed it under the very permissive MIT license, so should any nut like to incorporate it in another project, they can.  I've still got a lot more that I want to do with it, and no doubt many bugs remain, so that code will be changing.  But anyone who can program and who wants to play with their Sisyphus table is welcome to take it out for a spin.

The photo at right shows my table after an “erase” is almost complete.  If you look very closely at the track visible there, you'll see that it's actually a giant spiral, not a series of concentric circles as you might expect.  The command to make that spiral is very simple:

      0.0 0.0
      -628.3185307179587 1.0


That simple command tells the table to start at 0 radians, 0 distance from the middle, and draw a line to -628.xxx radians, 1.0 distance from the center.  If you're not familiar with radians, I'll make it easy: that many radians is 100 complete circles (one circle equals 2 times pi radians).  The "-" tells it to move the ball counter-clockwise.  A distance of 1.0 from the center just means all the way to the outside edge.  So, in English, that command tells the Sisyphus table to draw a spiral from the center to the outside edge, taking exactly 200 revolutions to do it.

Why did it trace a spiral, and not just a straight line?  Because the Sisyphus table moves the ball using a polar mechanism, not a Cartesian mechanism that most people are familiar with (sometimes called an XY table).  The Sisyphus table has an arm underneath it that can move a magnet (that moves the ball) closer to or further from the table's center, and that arm can be rotated all the way around the center.  That lets the table put the ball anywhere it wants to, but moving the ball in a straight line is an unnatural act for it.  It turns out that the “natural” movement for a polar mechanism is ... a spiral.  More specifically, an arithmetic (or Archimedian) spiral – which is exactly the shape of the spiral on that erase.

I just added the ability for my software to draw circular arcs on the Sisyphus table.  That motion is also an unnatural act for the table, so what I'm really doing is drawing a series of short spirals that differ infinitesimally from an actual circular arc.  The photo at left, below, is the actual result of my first effort on the physical Sisyphus table.  The image at right was generated by my software, emulating the physical table.  This lets me troubleshoot the track generation before I go to the time and trouble of actually drawing it on the table.  To make the trace at left took 9 minutes, 33 seconds.  To make the image at right took 4 seconds.  That's a considerable time savings when iterating during track development!


Friday, January 19, 2018

Of search fails, wipers, socks, and snow...

Of search fails, wipers, socks, and snow...  How on earth shall I tie all those notions together?  The easy way, of course – by not!

Google has apparently decided to stop indexing my blog – searching for posts that I know I've made shows no results.  This is a bit surprising since this blog is hosted by Google's Blogger platform!  I've no idea what rules Google uses when deciding what to index or not index, but I do have two standout suspicions.  One possibility is that the web is getting so damn big (over 130 trillion pages as I write) that even Google can't keep it all indexed.  If they could index a million pages per second (and I'm pretty sure they can't index anywhere nearly that fast), that would take over four years to index.  The obvious strategy there is to index fast-changing sites more frequently, and that strategy used to be why blogs tended to be well-indexed.  That strategy isn't good enough these days, so I don't know what they do anymore.  The other possibility is that non-progressive voices are being systematically suppressed by blocking them from indices, including both Google's and Twitter's.  There is some persuasive evidence of that from the more popular conservative or libertarian web sites.  Possibly my site is being caught up in that.  If that suppression is actually occurring, it's political meddling that I'm very sorry to see – but not particularly surprising, knowing the rather evident progressive leanings the leadership of most of our big technology companies...

One of my favorite things about owning a Tesla Model X is the way new features appear like magic, every time there's a software update for the car.  Those updates don't happen on any particular interval, but the average seems to be about two a month.  In one of the recent updates, the automatic windshield wiper feature was included.  The car already had the sensor installed, but the software to make it work hadn't been finished.  Now it is, and the automatic wipers work great!  Unlike other automatic wipers I've used, so far I can't seem to predict when they're going to trigger.  When enabled, they've always worked before I would have manually triggered them, so I'm very happy with the new functionality.  Because I can't predict the triggering, though, I'm guessing that there's some AI (a neural network) involved, and it's using “rules” created by the training they did – and nobody has any clue how it works.  That sort of thing doesn't bother me at all when used to control something as innocuous as windshield wipers.  Controlling the steering and brakes is a whole 'nother beastie...

I know I've written about my Wigwam socks before, but searching for that post gives no results.  I've been very pleased with these.  I bought my first few pairs three and a half years ago, and then more a year and a half ago – and I have yet to wear a hole in a single pair of them, nor has the elastic lost any of its sproinginess.  At this point I'm certain the extra cost was more than made up for by their longevity – without even considering the extra comfort and warmth they provide.  Highly recommended!

We are to be slammed with rain and snow today, if we're to believe the weatherman.  The current radar image (at left, click to embiggen) lends him some credibility.  During the day it should be well above freezing, so it will be rain and hopefully it won't freeze on the ground to make a sheet of ice.  This afternoon and tonight, though, our temperatures will dip below freezing, and that rain will turn into snow.  Oddly, the forecast doesn't include an actual amount of snow, so I'm not sure how much we're likely to have on the ground tomorrow morning.  Almost certainly it will be enough that I need to break out the snowplow again...

Thursday, January 18, 2018

Well, I blinked...

Well, I blinked ... and three days went by without a post.  I'm all astonishment!

I'm feeling much better than earlier this week, in fact, just about back to normal.  I have no idea what evil virus had me under its spell, but it wasn't much fun.  That got me to wondering how much of our body is actually other organisms (hopefully, just bacteria, fungi, and viruses).  A little googling got me an answer:
The human body contains trillions of microorganisms — outnumbering human cells by 10 to 1. Because of their small size, however, microorganisms make up only about 1 to 3 percent of the body's mass (in a 200-pound adult, that’s 2 to 6 pounds of bacteria), but play a vital role in human health.
I'm not sure I like that answer very much! 

We had my brother Scott down for a visit yesterday.  Debbie made us a spectacular fresh cod, brown rice, and asparagus dinner – with fresh-baked ricotta lemon cookies for dessert.  Afterwards we all played the Mexican Train game, and (as usual) Debbie trounced us.  That's her favorite game, I think because she can routinely beat me. :)

In between other things, I've been beavering away on my Sisyphus table software.  I've been working on a version that uses a much more understandable mental model for drawing.  I hope to have usable results from it in a day or two.

We just took delivery of two new cat trees.  After unpacking them, we installed them in our sun room – and the cats were all over them immediately.  Cat trees, unlimited food, and sun!  Doesn't get much better for a cat!  :)

Our forecast calls for snow tomorrow afternoon and evening, and below-freezing daytime temperatures for several days afterwards.  Looks like I'll be plowing on Saturday morning.  Later next week, there are warmer temperatures but significant chance for more snow.  Winter may have actually arrived...

Monday, January 15, 2018

Fixed Teslas and delicious cod...

Fixed Teslas and delicious cod...  Well, yesterday our Tesla repairman showed up, and within a few minutes of the promised noon appointment, too.  This fellow's name was Colin, and he had a companion: his dog, Anya (a Belgian Malinois, colored much like the one at right).  Both Colin and Anya were about as friendly and pleasant as one could imagine.  She's an 18 month old female, and at first she was sitting in Colin's truck.  Our three puppies spotted her from our back yard, and were whimpering to see her.  I told Colin that Anya was more than welcome to join our puppies, and seconds later the four of them were running around our backyard like mad, having a grand old time.  Anya was doing “puppy bows” to initiate play, which Colin said she rarely did.  That was a treat for both of them.

Colin had the replacement part for my Model X, and he did the work while I had it parked in front of our garage, in the sun.  Most of the work involved tugging and yanking various plastic bits and carpets out of the way; there were only two screws he needed to remove.  The part itself was much larger than I expected – the bit that broke off turned out to be just a small protuberance on a roughly foot-tall plastic bracket that was mostly hidden under the interior coverings.  It doesn't look strong enough to be supporting a floor; I won't be a bit surprised should it break off again, and I don't think Colin will be surprised, either.  Anyway, in under an hour from start-to-finish the car was fixed.  No charge; apparently this is covered under either my warranty or my service agreement.  That makes me happy, as I think this is pretty clearly a design deficiency.

Debbie purchased some fresh cod at Macey's on Saturday, and yesterday she baked it using a recipe she's made a couple times before.  It was delicious!  She also made brown rice and peas to go along with it, which all together made a simple, but really satisfying meal.  It still blows me away that we can so easily get fresh fish up here – so much better than the grocery stores in the San Diego area...

Yesterday I felt a bit worse from whatever bug it is that I have.  This morning I feel quite a bit better, thankfully.  We took a drive up Blacksmith Fork Canyon, hoping to spot some moose.  Didn't see any moose, but we saw lots of deer (very fat and healthy looking, they were) and a bazillion elk up at Hardware Ranch.  Unfortunately we also passed two dead cats, hit by cars, on the way in.  On the way home we stopped with our four-way flashers on, and Debbie carried the bodies off the road.  Both of them were clearly pets; one had a collar and the other was very well-fed (read: rotund).  That was sad.  We see that all too often around here, as very few people keep their cats indoors...

Sunday, January 14, 2018

Sunsets and poblano casseroles...

Sunsets and poblano casseroles...  I'm still a bit under the weather, dang it.  The generally cloudy days are making for some gorgeous sunsets, like Friday's at right.  That was taken as we drove out of the canyon that Porcupine Reservoir is in.  The snow had melted enough that I thought the Model X could make it up the steep dirt road to the reservoir itself, and in fact it did so with no fuss whatsoever.  Once we got to the top and could look over the reservoir, I was happily surprised to see how full it was.  It's got 10 or 12 feet to go until it tops the outlet, but for this time of year that's very full indeed – especially considering that our “wet season” is still a few months away.  There's little doubt that the reservoir will be filled to the brim by the time spring comes along, which will make the farmers (and me!) very happy.

Yesterday Debbie made a poblano pepper casserole (at left, just out of the oven).  The main ingredients are poblano peppers, roast chicken, mozzarella cheese, lime, and onions.  She's made this before from a recipe that calls for cutting the limes into thin slices and putting those right into the casserole.  This time she zested and juiced the limes, and put that in the casserole instead – and the result was much more to our taste.  I wasn't feeling well and so didn't expect to eat much – but I went back for seconds.  Three more meals worth of that got vacuum packed and frozen this morning. :)

In a few hours the repair technician from Tesla should be here to fix my broke-ass Model X.  Should be interesting to watch.  I'm really curious how well-equipped (or not) their mobile techs are...

Saturday, January 13, 2018

I broke my Model X!

I broke my Model X!  On Thursday afternoon we stopped to pick up some salt for our water softener.  That salt comes in 40 pound bags, and I bought eight of them.  When I loaded the third bag into the back of my Tesla Model X, there was a loud crack! and the bags on passenger side of the car suddenly dropped about 8".  With a little investigation I discovered what happened.  I was piling the bags on top of a false floor that covers a hidden cargo area.  That false floor is held up by two plastic brackets, like little shelf brackets – one on each side of the hidden cargo area.  The one on the passenger side had snapped clean off.

Oh, noes!  My Tesla is broken!  Sob!

By inspection, it appeared that the broken part was a plastic bit that just snaps into the Telsa's frame.  I took photos of it, and emailed it to our local (Salt Lake City) maintenance shop.  That was on Friday morning.  A few hours and a brief email conversation later, I had a Tesla technician scheduled to come by our house to replace the broken part.  That technician will be here on Sunday (tomorrow!) around noon.  I'm surprised they'd travel all the way out here to fix such a small problem, but I'm certainly happy about that.  I'm even happier about the fast response!

Now I just wish that bracket was stronger.  If a few bags of salt are enough to snap a bracket in the freakin' cargo area, that seems like a design issue to me...

Thursday, January 11, 2018

A very nice day...

A very nice day ... except for the three and a half hours I spent on the phone with the pharmacy our health insurance dictates that we use...

The good parts first: I feel much better today than yesterday, and that improvement started about noon yesterday.  Whatever bug I have seems to be losing the battle to my immune system.  Yay, immune system!  I did get a couple of hours of good work in on my Sisyphus table software, which I'm finding peculiarly satisfying.  I've always enjoyed writing software that makes things move in the physical world, and the Sisyphus table is a great example of such a thing.  The best part of yesterday, though, was the evening: Debbie and I went out for dinner to Jack's (our favorite pizza place here).  I had a bowl of cream of fire-roasted tomato soup for an appetizer, and it was heavenly – their soup chef is superb.  We shared a “cordon bleu” pizza – one of Jack's patented weird-but-great pizzas.  This one had roast chicken, ham, bacon, lots of veggies, a creamy white sauce, and lots of fresh mozzarella cheese.  Wonderful!  Then for dessert we split a piece of Jack's delicious lemon cake.  The cake itself is mildly lemony, but the frosting is perfection: not too sweet, not too much, and as tartly lemony as you can get short of chomping the actual fruit.  It's drizzled with a raspberry sauce, and accompanied by luscious raspberries and blueberries.  A treat and a half!  When we got home, we settled in to watch Ice Age 4, which I'm sure many of you would agree nicely matches our mental ages.  We laughed 'till we hurt. :)

Now the not-so-good part: this year we purchased a separate health insurance policy for Debbie, as I'm on Medicare and my child bride is not.  That means that this month we're going through all the pains of a policy transition.  One of those pains involves a $3,100 per month (for 24 months) prescription drug to treat Debbie's osteoporosis.  The hoops we have to jump through to get that prescription approved are formidable.  When we first got it approved, it took several weeks and several dozen phone calls, plus some obnoxiously persistent behavior on our part and by her doctor.  Then came the payment joys: her policy has an absurdly high deductible ($13,000 this year), so until we hit that it's all out of our pocket.  The pharmacy has to collect that deductible, and of course they don't have good information about when the deductible has been met (the information from the insurance company is always out of date).  Fortunately we have a great relationship with our local pharmacy, and they just trust us.  However, with the new policy this year, our local pharmacy is not “in network” – and for this particular drug, only one pharmacy is in network: a mail-order pharmacy run by Walgreens.  Those are the folks I was on the phone with yesterday, for three and a half hours in five separate calls.  There were two major hiccups.  The first involved (naturally) payment.  They had no information from the insurance company at all (and they're the mandated partner!).  That took three calls to straighten out.  The second problem was that they had the dosage wrong – someone had made a typo and had entered "60 mcg" instead of "20 mcg".  Now "mcg" is a microgram – one millionth of a gram, and a gram is one 454th of a pound.  A microgram is a tiny amount of that drug.  But that mistake (a) would have been three times what her doctor prescribed, and (b) would have cost $10,300 a month instead of $3,100.  The really scary part?  I'm the one who caught the error, when they were verifying the shipment contents to me.  Fixing that took two more phone calls, one of which was 90 minutes long and had me being transferred to pharmacists, doctors, managers, and clerks.  What a mess!  I'm so tired of dealing with this incredibly inefficient bureaucracy!  I want Amazon to get into the health care business (including pharmacies) and straighten this God-forsaken disaster out.  The government has had enough attempts at it.  Ask anyone who's dealt with the Veterans Administration how they like single-payer healthcare (assuming they survived, that is)...

There was another interesting event yesterday: our local power company came and fixed an impending problem.  Some six months ago, one of their employees noted that the insulators on the wooden crossbar at the top of the pole in the photo were coming loose.  If they broke off, one of the high-voltage lines might break and fall off – shutting off power to everyone downstream of that break.  That would also be dangerous for anyone who happened to come in contact with the fallen line.  That pole is alongside our driveway, and is also the point where the power feed for our house and barn are connected.  Yesterday this job hit their schedule, and a surprisingly large crew showed up: three trucks, a car, four workers, a supervisor, and two flagmen.  They shut down one lane of the highway we're on for the two and a half hours it took them to make the repair.  They had some interesting equipment to make all this work.  One of the trucks had a cherry-picker that held up the wires as a kind of temporary pole.  It was fitted with a crossbar that held the wires a few feet from the real pole.  Then they disconnected our feed and the high-voltage wires from the old crossbar.  That's what they're doing in that photo.  The way they did this was awesomely low-tech: they used insulated poles with a metal hook on the end to unwind the wires that had been twisted together.  That took a tedious hour to do.  After that, they simply unscrewed the old crossbar and replaced it with a shiny new steel crossbar.  When they reconnected the wires, they did it with high-tech insulated clamps that got put into place in about one minute (and would come apart just as easily).  The supervisor told me that they had just started using these clamps: for the entire preceding history of electrification in Utah, the twisted wire approach has been in use.  I'd have guessed that problem would have been solved a long, long time ago...

While they were making this repair, our power was disconnected – for two and a half hours.  This provided a great test of our backup systems, and I'm delighted to say that they all worked flawlessly.  The backup generator for the house took 22 seconds to light off, and our solar panels were providing about 70% of the house power despite being slightly cloudy and with the sun low in the winter sky.  The backup generator for the barn took 24 seconds to light off, and the continuous UPS that powers all the computer equipment in my office handled that outage without missing a single cycle.  Our Internet connectivity was down for 87 seconds, mainly because the cable modem, routers, and switches had to reboot when the house generator kicked in.  We've only discovered two issues caused by the outage: all the digital clocks (dang them!) reset, and the disk drives for our Plex server had to be manually powered back on.  That latter problem may be fixable by a configuration on those drives.  The former problem I'm afraid we're stuck with.  Still, that's a pretty painless two-and-a-half hour power outage!

Wednesday, January 10, 2018

It's sopping wet outdoors...

It's sopping wet outdoors...  Temperatures are in the 40s, and it's been drizzling all night.  According to our 10-day forecast, we have very little chance of more snow.  Much of our snow cover is gone or turned into translucent slush.  With any luck at all, there will be enough sunshine today to get rid of even that.  Thankfully I have very little that I must do outside today.  I need to take the garbage to the curb, and that's about it.  That's doubly nice, as I've been feeling a bit under the weather the past couple of days – feels like some sort of a cold.  I have a fever, so I'm operating with a less-than-normal number of functioning brain cells.

My new office heating system (the fan that circulates air from my heated first first floor) is working like a charm.  Each morning when I come over to my office, the temperature is right at 64°F, no matter what it is outside.  My preferred working temperature is about 10°F above that, so I am now developing the habit of lighting off a fire in my little woodstove first thing every morning.  The photo at right shows my usual morning “stack”, just after I set the match to it.  The kindling you see is remains of western cedar lumber that I trimmed when installing the ceiling on our deck last fall.  That stuff burns with a match put to it, even the thicker pieces of it (roughly 1/2" square cross-section).  You can see the sawn logs, the result of another morning “ritual”: grabbing two softwood logs from my pile and sawing them up for the day's fuel.  I sawed those logs in the photo about three minutes prior to starting the fire.  In about 30 minutes, my office will be a toast 75°F or so – just right!

Another morning habit, one of long standing, is to take a gander at the major stock market indices, especially the S&P 500 and the NASDAQ-100.  Until the past year or so, when those indices moved in the morning, I had at least a rough idea why, and I understood the logic.  I could usually predict when such movement was likely to be short-lived or long-lived.  Those days are completely gone.  There's so much thrashing on topics of economic importance in the news that I can't possibly keep up with it all.  One of Trump's tweets can move the markets by several percentage points, and damn near on a daily basis.  If you apply, say, a 30 day running average, things look more predictable – but really, no more understandable to me.  I'm delighted that the market is moving positive at a dizzying pace, but I can't claim to have any real understanding of why it is.  The pundits all merrily pontificate, but their track record is so bad that I try very hard to ignore them.  I'm sure the party will end one of these fine days, but I couldn't tell you if that will be later this morning, or in 2054...

Tuesday, January 9, 2018

Cotyledon tomentosa...

Cotyledon tomentosa...  From BPotD, of course!  As usual, click on the photo to embiggen it. 

In the mid-'90s, my work took me to South Africa for a couple of days.  I didn't have time to do much while I was there, but I did get to take a day hike through the wilderness there.  I saw these or their close relatives (slightly more orange than the photo), growing in profusion on a rock pile that didn't look like it would support a lichen...

Monday, January 8, 2018

Beethoven's piano music...

Beethoven's piano music ... is great music to program by!  Listening to his Appassionata (piano sonata #23) now...

Back in the bad old days before I retired, I worked for a long time in one of the “open” environments.  I often listened to music while working there, usually with headphones.  But early in the day, when I was the only one there, I'd turn on my speakers.  Occasionally someone would wander in while I had them on, and I often got funny looks and comments from people overhearing it.  Once, though - just once! - a fellow early worker (a woman from our technical writing group) came over just to hear what I was playing.  That morning it happened to be Mozart's Requiem, a piece she wasn't familiar with, and she loved it! 

I suspect this is more a reflection of the fact that my co-workers were mostly in their 20s and early 30s, and more into hip-hop and rap than classical music.  Hopefully they will develop a taste for it as they get older, as I did...

Plowing, shoveling, and salting, oh my!

Plowing, shoveling, and salting, oh my!  And a bit more, too...

Friday night until early Saturday morning, we had a dose (about 2") of wet, gloppy snow – and a thin layer of “black ice” all over our driveway.  Saturday morning when I plowed it was quite entertaining – my tractor slipped and slid all over the place.  Steering was a major challenge, and utterly depending on the fact that my tractor has four wheel drive.  If those front tires weren't scrambling and scratching to turn the tractor, I don't think I could have turned it at all!  Whenever I put the blade down, if I had more than a few pounds of pressure on it the tractor would simply stop, all four wheels spinning like mad.  If more than a few inches of snow built up in front of the blade, the tractor would also come to a halt, again with wheels spinning.  To get the snow off the driveway, I had to use inertia: I got a running start behind a snow pile, slammed into it, moved a few feet before the wheels started spinning, then backed up and did it all over again.  Tedious, that was!  But getting the snow off meant that the sunshine later in the day would melt the ice, which it did on the roughly half of our driveway that isn't shaded in the winter.  The remainder is still ice-covered...

Yesterday evening we drove over to our northern neighbors (Tim and Jeannie D.) for a visit.  Tim has been diagnosed with lymphatic cancer (there's a particular type, but I've forgotten what it's called), for which he had surgery last month and is now undergoing intensive (daily) radiation treatments.  Jeannie recently (also last month) had a serious case of pneumonia that required surgical intervention, something I'd never even heard of before.  From that description, you might think theirs would be a gloomy household – and you'd be very wrong.  We had a jolly time with them last night.  Debbie brought over some freshly baked lemon ricotta cookies (yummy, they are!), and we spent a happy hour or so in conversation with Tim and Jeannie, their three dogs, and their regal (and very fluffy) cat.  Jeannie, to all appearances, has completely recovered.  Tim is optimistic about his chances, but also ready for the bad news that he knows is always possible.  There's no doubt that his devout religion helps him with this, but no matter what the reason his acceptance and optimism are inspiring.  If such bad news ever befalls myself or Debbie, I hope we can handle it with such equanimity.

Earlier yesterday afternoon, Debbie and I finished watching (for the umpteenth time) one of our favorite series: the 1995 BBC production of Jane Austen's Pride and Prejudice. If you know me, then you know I'm not much of a movie fan.  There are relatively few movies I can even sit through, and even fewer that don't regret spending the time on.  The list of movies (or shows) that I can stand to watch repeatedly is very short indeed.  This one is near the top of that list.  I love reading Jane Austen's novels; most of them five or six times over now.  Everything about this series is top-notch: it's reasonably faithful to the novel (though of course, of necessity, leaving much out).  The casting is superb.  The acting is uniformly good, and the leads are magnificent.  The costumes and sets are wonderful.  Even the music is beautifully done, quite unusual for a TV series.  If you've never seen this production, carve out a few hours and do so.  It's divided into six episodes, each roughly an hour long.  We watched two episodes a night for three nights...

Friday, January 5, 2018

Sisyphus table progress...

Sisyphus table progress...  I managed to get a bit of time in yesterday on the Sisyphus table.  My latest pattern creation is at right.  That pattern is made entirely of straight lines.

I've learned a lot about how to draw on this table, so now I'm tossing out all the “experimental” code I've written, and starting over in a way that will let me (easily, I hope) make new patterns.  I'm open-sourcing this project under a permissive license, which means that anyone else will be able to use it as well.

A reader emailed me to find out where I got it – it was made by Sisyphus Industries, but they're not selling them yet.  I got it through the Kickstarter project that started the ball rolling (literally!) for them.  I believe they're still manufacturing all the orders they got through the Kickstarter, and then after that they'll be taking new orders.

Splitting logs the easy way...

Splitting logs the easy way...  My office (out in my barn) is kept at 65 degrees by a blower that circulates air from the heated first floor.  If I want it to be warmer (and I do!), I start a fire in my little wood stove.  That stove is really small – perfect for my little office – but there is a drawback: it needs really small little logs, no longer than 16", and ideally under 5" diameter.

For quite a while this made no difference to me.  We have two large stacks of firewood, one of hardwood and one of softwood.  Until this week, I'd been picking the smaller pieces out of those stacks and making out just fine.  I was helped in this process by the fact that my little wood stove doesn't consume very much wood – just three or four logs will last all day long.  But earlier this week, I ran out of the little logs.  Yikes!

My first thought was to take the old-fashioned approach: shorten the logs with a chainsaw, then break out either the axe or the hydraulic log-splitter (I have an attachment for my tractor).  Both of those are more work than I really wanted to put into it, but I like being warm ... so a few days ago I was ready to go to it.

And then I had a brainstorm.

I have a bandsaw with an 18" throat.  That means I could cut up any log under 18" in diameter – that would be all but a very few of the logs I have.  So I tried it – and it worked amazingly well!  In no time at all, with very little work, I had a nice pile of logs perfectly sized for my little stove.

My bandsaw is my new best friend!  :)

Wednesday, January 3, 2018

Eagles and mooses and elks and deer, oh my!

Eagles and mooses and elks and deer, oh my!  Debbie and I took a sunrise jaunt up Blacksmith Fork Canyon this morning, hoping that it wouldn't be crowded, and that we'd see some wildlife.  We won on both counts! :)  We were nearly all the way to Hardware Ranch before we saw the first car, and we had some terrific wildlife viewing.

First up was the moose: a young bull, sans antlers (they shed them each winter) but we could see the scars.  He was on a little ridge about 75 yards from our car, browsing on some tasty willow, and he paid us no mind at all.  That's the first moose of the season for us, and started our trip off right.  Debbie spotted this guy through a large juniper.  Sometimes I think she has some form of ESP – I couldn't pick it out even with her help until we moved the car so we could see it from another angle.  Debbie spotted it while the car was moving, looking backwards.  I have no idea how she does this!  She probably thinks the same thing about me with birds and flowers – I usually spot those long before she does.  We make a good team! :)

Then on the way to Hardware Ranch we saw several deer, mostly high above us on the sunlit southern slopes where the snow had melted and the sun was warming them up.  When we got to Hardware Ranch itself, there were (as expected) a bazillion elk in the enclosure – but not a single other person.  We had the place completely to ourselves, as opposed to the scene this weekend where there were a hundred or so carloads of people waiting to get horse-drawn wagon rides out to see the elk.

The capper, though, was a great sighting of an almost two-year-old bald eagle.  We had five minutes or so of seeing him, both perched and in flight.  We know its age because of its coloring; the young ones have distinctive brown flecking in their not-quite-white head...

Tuesday, January 2, 2018

This and that...

This and that...  We've had a very pleasant few days, a bit quieter after the Christmas season that was so busy around here.  The moon this morning was awesomely bright in a totally clear sky – so bright that I was able to take a photo by moonlight on my iPhone (at right, unretouched - click to embiggen it, and you may have to turn your screen's brightness up).

Yesterday Debbie and I went up to Angie's to get our late breakfast.  Debbie had country fried steak and eggs, and I had the special: a 16 ounce ham steak and eggs, with hash browns and rye toast.  Debbie ate nearly all of hers, but I just barely got through half of that enormous (and delicious!) ham steak.  The two girls who served us were both friendly and helpful, a pattern there that is part of the reason we like the place so much.

I've mostly been working on bills and catching up with our health insurance (both of us were forced into new plans this year because of insurance products being dropped, because they lost a lot of money in the Obamacare exchanges).  I have over 300 pages of insurance-related paper that I'm plowing through, trying to figure out what is what, and (especially) what I have to do or pay in order to maintain our insurance.  It's absolutely crazy how complex this is; it's getting to the point where it rivals income tax in complexity - only I have no software to help me with that, as I do with my income tax.  I'm a bit tired of this insurance crapola ... and I'm damned tired of paying the absurd premiums that we do in return for the even more absurdly limited benefits...

In between rounds of attack on the paperwork I've been playing with my Sisyphus table.  At right is a photo of the latest thing I managed to get working: an actual pattern.  That particular pattern is made entirely of straight lines, and the straight lines were the hard part.  The way the table moves the ball isn't what I had expected, and not like any other device I've ever run into.  That doesn't mean it's bad, just that it was surprising to me how it works.  Just for an example, suppose the ball starts out at the top dead center: that's zero degrees, distance of one.  Further suppose that you tell it to move to 90 degrees, distance of 0.5 (that would be to the right of center, halfway to the edge.  It doesn't move the ball in a straight line to get there.  Instead, it moves both the distance and the angle at a steady rate until it reaches the target location.  That produces a segment of a spiral, which is rarely what you actually want - and it certainly isn't a straight line!  To make it move in what appears to be a straight line, I have to send lots of commands to make small movements.  One apparent straight line might be made up of 20 or 30 much smaller movements, each of which is actually a spiral segment, but which is so short it appears to be straight.  That pattern displayed above required 4,854 small movements in order to make it look like I drew it using a bunch of straight lines.  Next I'm going to see if I can make it do arbitrary Bezier curves.  That will be a tad more difficult, I suspect... :)