Friday, November 24, 2017
The almond rant particularly interested me, as the Moroccan woman went to some trouble to explain why it mattered. According to her, unless you ground the almonds they wouldn't express any oil, which provides a key element of flavoring for the b'stilla. Our crushed almonds (toasted) were always dry as dust, so I was really curious if grinding them would actually result in what she said: something akin to crunchy peanut butter. So I whipped out our meat grinder (which we haven't used in years) and ground up our toasted almonds. The result was ... exactly as she described: just like crunchy peanut butter, and very oily. As directed, I mixed that with sugar and cinnamon, and the resulting concoction was way different than anything we'd used before when making a b'stilla. And the resulting dish, I have to say, bears out that woman's rant. I also measured the water we used very carefully, and in fact we ended up with ingredients that matched the recipe. I think we might have done it right this time!
And there are leftovers!
The carrot salad was not what we remembered, but it was pretty good nonetheless. This recipe had cayenne pepper in it, and we won't do that again. Even without the pepper, though, it wouldn't have matched our memory. We'll keep searching for the right recipe.
The chocolate mousse also came out wonderfully. I modified Julia Child's recipe slightly (gasp!): I eliminated the coffee (going for pure, unadulterated chocolate flavor) and I increased the butter from 6 ounces to 8. It was pretty much perfect. :)
Our little canine friends were not left out, either. They got several treats yesterday: an extra banana (3 for 5 dogs, instead of 2), milk on their kibble, egg yolks, and the cream leftover from making the mousse. They were all quite happy with that! :)
My brother Scott, Debbie, and I played a traditional family game last night: Oh, Shit. Scott won. :)
Thursday, November 23, 2017
- Debbie and I are both in age-adjusted good health.
- We live in a wonderful place, surrounded by admirable and tolerant neighbors.
- We're blessed with an assortment of friends who watch out for us, and make us smile.
- We're not worried about money (this is a huge change for us in the past four years).
- Our animals are all healthy and happy.
- Our several friends who have had recent health scares are all feeling much better.
- Our immediate families are all healthy and at least sometimes happy.
- It's a beautiful day today, and our holiday meal is being prepared.
We're planning to be near-comatose by around 5 pm. I hope you are too!
Wednesday, November 22, 2017
Sunday, November 19, 2017
Our notion is to build a water feature in our back yard that includes the sculpture. We've got some thinking and planning to do!
Saturday, November 18, 2017
This morning I've started writing the software that will eventually control the new fan, based on the algorithm I've described in a previous post. This would be a trivial exercise in daemon construction but for the fact that I'm going to allow some nice monitoring capability. That requires me to write the daemon multi-threaded – a new experience in C programming for me. I've also got another challenge: a parts delivery is late and prevents me from actually bringing up the Raspberry Pi I bought for this purpose. So I'm writing a bunch of software that I won't be able to debug for several days, at least. This is not my preferred modality – I like to write a little bit, then test, fix, and repeat...
The little kitten is doing very well. We may have settled on the name “Kalea” (pronounced ka-LAY-ah), which is Hawai'ian for “full of joy”, but I wouldn't count on that. :) It's eating like a little piglet, and spends a lot of the time sleeping. All signs of stress have disappeared.
bigeye tuna. We bought about 20 ounces of it, and today my lovely bride made us a mess of poke with it (my bowl at right). Oh, man, was that good! That's raw fish in a soy-based sauce flavored with a bit of sesame oil, with avocado, green onions, and some sesame seeds for garnish. That big-eye tuna disappeared mighty quickly!
Friday, November 17, 2017
Paradise ponders: temperature moderation progress, kitten settling in, and great customer service edition...
I spent most of yesterday afternoon working on the return for my office temperature moderation project. I had a question from a reader about how I cut those rectangular holes in the OSB. The first photo below shows the beginning of such a cutout, in this case through the second-floor floor sheathing. I started with a 1/2" hole right in the middle. Then I used a battery-powered skill saw to cut a couple of chunks out, as you see in the first photo below. This gives me access to make the square cuts, and I ended up with what you see in the second photo. To put the return in, I had to make four of these rectangular holes: on the inside and outside sheathing of my office wall, on the second-floor floor, and on the first-floor ceiling. These all had to be in perfect alignment, which meant much careful measuring. Once the holes were cut, however, the rest was a piece of cake; in the last photo you see the completed return. Well, almost complete. Today I'm going to cut some OSB to make covers for the rectangular holes I cut, with a hole for the ducting. This will let me refill the holes with insulation and button it all up nicely. Then I really will be done!
Debbie is working on a name for the new kitten, which she thinks is female (it's surprisingly hard to tell with kittens). We have an appointment for it at the vet next Tuesday. Meanwhile it's in one of our isolation cages, with a soft bed, a clean litter box, and an unending supply of food and water. It looks quite content. :)
Thursday, November 16, 2017
Wednesday, November 15, 2017
The first photo below shows the blower I installed on the ceiling of the first-floor “garage” section of my barn. I did that well over a year ago, and it's just been sitting ever since. That's a very conventional squirrel-cage blower, running on a fractional horsepower synchronous motor (so very efficient), blowing straight up. Above that exhaust port on the blower is a rectangular duct I built out of wood, leading through the ceiling (which has 8" of insulation in it). The second photo shows what's directly above that blower, on the second floor of my barn. This is out in the storage section of the barn, which is uninsulated and unfinished. You can see the top of the wooden duct I built, and the beginnings of the plenum box. That box is made of 1/2 OSB skin with 2x3 stringers, and stuffed with insulation. One the inside you can see the “rails” I fabricated to hold a standard 16x25x1 filter (and you can see that filter installed on the last photo). The next thing I built was the top of the box, a slightly complex assembly (fabrication in progress on the third photo). Finally, in the last photo you can see the almost-complete plenum box – only the front door remains to be built, and that will be my first job this morning. Once that's complete, the downstairs blower will pressurize this plenum box, and filtered air will exhaust through the 6" duct connection on the top. The next step after that will be to install a “boot” in my office and connect it to the plenum box with flexible insulated ducting.
Tuesday, November 14, 2017
Originally we'd ordered this desk for Debbie's office, in our house. At the time we ordered it (almost two years ago), I carefully measured the dimensions needed and sent them to the craftsman who was building that furniture. The desk and a matching table in her office are made from black locust by a guy in Georgia. Well, unbeknownst to me, as the craftsman was working he proposed making the desk bigger – much – bigger, with no increase in price. He made that proposal to Debbie, through the vendor. Debbie said “yes”, not realizing that the size was a critical factor. I never heard about this little exchange. We took that desk upstairs to her office, after taking it apart to negotiate all the corners. I only realized the size was off after we'd gotten it all up there and the delivery guys had left. That desk is heavy – I'd guess over 200 lbs all assembled. Realizing that it wasn't going to fit was quite disheartening. Finding out it was all our fault (and not the craftsman's) was even more disheartening – that desk was not cheap. And it wasn't going to fit in Debbie's office, no matter what magic I tried to do. Dang it! There was nothing for it but to order a new desk for Debbie. That left this giant desk with no home. The only obvious things to do were to either keep it for me, or to try to sell it. We decided to keep it. So I disassembled the desk again, enlisted the aid of my brother Scott, and the two of us moved it, piece by piece, over to my office. What a struggle that was! It spent the last year disassembled in my office, right in the middle of the chaotic room.
So yesterday I reassembled it and moved it into place where I'd been using a folding table as a desk. That's what you see in the photo. It's beautiful, isn't it? And it took me all day!
But ... last night I ran across a new Kickstarter project that has set a new bar for both of my red-flag triggers. To my surprise, investigating this project was like walking through a portal to another world: one populated with (if I'm being charitable) a large number of astonishingly under-informed people.
My first clue was the title of the project: Gabriel Device - Free energy for everyone. That seems to over-promise a bit, no? The photo at right is a screenshot of the device itself, taken from the video on the project home page. It appears to be a simple toroidal transformer, a common enough device in modern electronics and electrical gear – one without any magical properties that I'm aware of.
My second clue was the first bit of the project description. I'll just quote it:
How to change the world, Changing the world in of itself is a undertaking only most dream about and bicker about in early morning rush hour or afternoon coffee-shops, The United states is hapless says a Englishman, the new world is destroying our faith says a Muslim, why does my country seem to be in free-fall all the time, says a American.I think Nicola Tesla may well be dancing in his grave, though perhaps not for the reasons this fellow thinks!
Most of these issues are brought about by the media and propaganda that aspire to enrich or enslave a mind, but what if, the core issue to all of our problems stems from a power-source that just either hasn't been developed or needs to be fully developed,
If power was a source that could be transported and established across a well, a farm, a school, a vehicle, a hospital, all without moving parts and the only need to make it work is to get it initialized, that would even make Tesla himself dance in his grave.
Further along in his description, he calls his device a “nested bi-toroidal transformer” – something I'd never heard of. So I googled it. It was when I started following the links that I felt like I'd entered that portal into another universe: the Universe of Perpetual Motion. The current phrase in vogue is “above unity”, referring to devices with a ratio of output power to input power that is greater than one. In the short intervals of coherency I found in the posts and videos, I think I figured out why the bi-toroidal transformer has entranced these folks: it's because they don't understand power factor, and this has fooled them into believing they're creating power from nothing. This wouldn't be the first time that power factor has been a perpetual motion factor.
But ... this project is certainly the first time I've seen something so plainly loony on Kickstarter. People are being asked to pledge a half million dollars (for what, I have trouble imagining, and the project doesn't actually say). I'm somewhat relieved to see that as of this morning there is just one backer who has pledged $40. I'm reasonably confident that this fellow won't get a half million dollars in pledges – but what if he did? Would Kickstarter actually give him the money? Kickstarter's guidelines and prohibited items list don't seem to rule out perpetual motion schemes. Kickstarter and Stripe both make money from funded projects, so clearly both have an incentive to actually follow through with the funding, should there be sufficient pledges. Gulp. Part of me says “Yikes! That shouldn’t be allowed!” Another part of me – dominating at the moment – says “If there are enough fools willing to donate to an obviously hopeless cause, then … it’s on them. ”
But still ... oh, my!
Well, the 24th came and I hadn't heard from Lowe's at all. Not good. I called, was promised a call back with a delivery date. Never heard back. I called again, this time got another delivery date promised: the 30th. The 30th came and went. Are you seeing a pattern here? In this day and age, when vendors like Lowe's must compete with Amazon, the experience was so bad I can still scarcely believe it. Overall it was five weeks from the time I placed the order until it arrived in my house. I called Lowe's on six separate occasions, was promised three different delivery dates before they finally got it right on the fourth try. There is no online service to get this information, and every employee I contacted seemed to be uncertain about how to even find my order – much less any accurate information about it. I never received any sort of email confirmation from Lowe's (no snail mail, either). I still don't have a receipt, though the cost was charged to my credit card. About the only positive thing I have to report about the experience with Lowe's was that their delivery people were great: they had the right equipment, they took great care in the delivery, and they were friendly and polite.
We will never be ordering online from Lowe's again, unless convincing evidence of improvement is presented to us. You may remember that we had a similarly disappointing experience with WalMart a few months ago. Based on these two experiences, I'd say Amazon has little to worry about. The bad service from Lowe's and WalMart contrasts especially keenly with the almost perfect record of great service with have with Amazon...
I should be careful to point out here that we have zero complaints about the trash compactor itself. It is exactly as advertised. So far we are very pleased with it. It opens and closes effortlessly, and its operating noise is roughly half that of our old compactor. A win on that front!
Sunday, November 12, 2017
The engineer in me says “There has to be a better way!” A couple years ago I thought of one, and actually started to implement it. This better way depends on the fact that my barn's first floor is heated, and never goes below 64°F. It's a very nice heating system, using in-floor circulating hot water. The first floor isn't air conditioned, but it is very well insulated and rarely goes above about 77°F.
Why not simply use a thermostat? The challenge there is the thermostat would base its decision solely on the temperature in my office, but I need something different: to take the temperature at the ceiling of the first floor into consideration. Of course I'm going to tackle that with a Raspberry Pi (diagram of proposed system above right)! The parts are on order and should be here soon. I'm going to put a temperature sensor in my office, near my desk, and a second on the ceiling of the first floor. I'll use a solid state relay to turn the fan on and off. The Raspberry Pi will implement the fan control algorithm exactly as I described above, and in addition it will act as a monitor for both the first floor temperature and my office temperature. Once I have that all running, I'll be able to restrict my use of the heat pump to when I'm actually in the office (saving a few bucks a month), and I won't have to worry about the office temperature descending into the deep-freezer realm...
I did run into one disappointing thing. The “Multilink” software that comes with the UPS is a restricted license with very limited capabilities. It has an embarrassingly bad user interface, and there's no obvious way for me to write software that can interact with it, or monitor it. This is not what I had been expecting out of a datacenter-class piece of kit.
Multilink communicates with the UPS over a serial port. That got me to wondering whether the serial protocol was documented. A little googling and I discovered that (a) no, it's not documented and in fact is explicitly proprietary, and (b) of course some other datacenter operations folks have reverse-engineered it (the same protocol is used on many UPSs, including the monsters used in datacenters). This fellow made a start on documenting it, and includes some interesting information about how he did it. Here's another guy who actually wrote a Linux device driver for it! It looks like it won't be too hard for me to integrate some monitoring for this...
Saturday, November 11, 2017
The main problem I'm trying to solve is providing power for the (hopefully short) period of time between the time we lose main power and the time my backup generator kicks in. Generally that's around 30 seconds. A secondary problem I'd like to solve is to mitigate the effects of “dirty power” (brownouts, momentary outages, surges) on the computer equipment in my office. We had an example of a momentary outage last week, and it took me a couple of hours afterwards to get everything back up and running. It was that experience that prompted me to pull the trigger on ordering a UPS.
The one I bought is an “online” type, meaning that it has an inverter that continuously outputs 60 Hz sine wave 120 VAC. That inverter is powered from a battery, and the battery is continuously charged when there's 120 VAC available at its input (in other words, when the power is up). Most UPSs designed for home or small office use are a different type: “standby”. These UPSs only produce power when the main power fails, and there's always a brief “glitch” when the power switches over. Furthermore, standby UPSs aren't very good at dealing with brownouts or intermittent power outages. The datacenters I managed all used online UPSs, as hard experience with the problems caused by standby UPSs long ago convinced datacenter operators to stay away from them.
Another thing I learned while managing datacenters is that you really don't want to run an online UPS anywhere near its rated capacity. Doing so will reduce reliability (not exactly a feature in a UPS!) and, perhaps surprisingly, cause them to make much more noise. The latter is because in order to cool the power electronics (for the inverter, primarily) at maximum capacity, the fans in the unit generally run full blast – but when running well below their capacity, they can (and usually do) run much more slowly.
So I selected a UPS with roughly twice the capacity I actually need (I need 1,500 VA, so I bought one rated at 3,000 VA). Everything I read about it validated the thought that this would reduce noise, and I know enough about electronics to know that it will also increase its lifetime. The particular model I selected is 120 VAC in and 120 VAC out, matching the power I had available at the place I wanted to mount it, and the power I need for my computers.
Friday, November 10, 2017
It came together very quickly in the last few days, mostly because that's when I finally got all the basic stuff up and running solidly. Here's one example of a feature recently implemented: querying the GPS for the data it holds on visible satellites:
GNSS ID CNo El Azi PRr Signal qual Sat Hlt Orbit Src Flags
GLONASS 2 52 43 35 0.6 Code/carrier locked Ok Ephemeris uea
GPS 29 51 36 158 1.2 Code/carrier locked Ok Ephemeris uea
GPS 15 50 52 101 0.9 Code/carrier locked Ok Ephemeris uea
GPS 20 50 55 52 -0.4 Code/carrier locked Ok Ephemeris uea
GLONASS 18 50 74 355 0.6 Code/carrier locked Ok Ephemeris uea
GPS 21 49 72 333 -0.9 Code/carrier locked Ok Ephemeris uea
GLONASS 17 49 46 125 -1.5 Code/carrier locked Ok Ephemeris uea
GPS 18 48 58 248 0.5 Code/carrier locked Ok Ephemeris uea
GPS 13 47 33 62 0.0 Code/carrier locked Ok Ephemeris uea
GLONASS 3 47 79 207 -2.7 Code/carrier locked Ok Ephemeris uea
GPS 10 45 24 240 0.4 Code/carrier locked Ok Ephemeris uea
Galileo 8 45 66 174 1.3 Code/carrier locked Ok Ephemeris uea
GLONASS 19 45 22 322 -1.3 Code/carrier locked Ok Ephemeris uea
Galileo 3 44 48 57 0.6 Code/carrier locked Ok Ephemeris uea
GPS 16 42 20 299 -1.4 Code/carrier locked Ok Ephemeris uea
GLONASS 4 41 22 213 -7.0 Code/carrier locked Ok Ephemeris uea
GPS 5 47 7 56 -1.1 Code/carrier locked Ok Ephemeris a
GPS 27 46 13 320 -0.4 Code/carrier locked Ok Ephemeris a
GPS 4 44 -91 0 0.0 Code/carrier locked Bad None
GPS 26 41 20 267 2.3 Code/carrier locked Ok Ephemeris a
Galileo 7 39 18 208 1.6 Code/carrier locked Ok Ephemeris a
GLONASS 10 38 3 348 4.6 Code/carrier locked Ok Ephemeris a
Galileo 22 37 8 124 4.6 Code/carrier locked Ok Ephemeris a
Galileo 26 33 14 308 7.9 Code/carrier locked Ok Ephemeris a
Galileo 5 13 1 39 -1.4 Unusable Ok Ephemeris a
Galileo 1 0 2 307 0.0 Searching Ok Ephemeris a
u - used for navigation fix
d - differential correction is available
s - carrier-smoothed pseudorange used
e - ephemeris is available
a - almanac is available
S - SBAS corrections used
R - RTCM corrections used
P - pseudorange corrections used
C - carrier range corrections used
D - range rate (Doppler) corrections used
That is a lot of information, and quite useful when troubleshooting. The results of some of the configuration code I wrote are visible here, if you know what to look for. For example, I've configured the GPS to ignore any satellite whose elevation is within 20° of the horizon. This prevents the use of satellites whose signal path goes through a lot of atmosphere. Similarly, I've configured the GPS to ignore any satellite whose signal strength (as CNo) is under 30.
Another feature recently implemented is querying for configuration information. This is vital, both for figuring out what the default configuration was, and for verifying that the configuration code I wrote actually worked. Here's an example result:
U-Blox GPS configuration
Power enabled: yes
Short detection: yes
Open detection: no
Power down on short: yes
Auto recovery from short: yes
Tracking channels: 32
Minimum channels: 8
Maximum channels: 24
Minimum channels: 0
Maximum channels: 0
Minimum channels: 8
Maximum channels: 8
Minimum channels: 0
Maximum channels: 0
Minimum channels: 0
Maximum channels: 0
Minimum channels: 0
Maximum channels: 0
Minimum channels: 8
Maximum channels: 24
Dynamic model: Stationary
Fix mode: 3D only
Fixed altitude (2D): 0.00 meters
Fixed altitude variance (2D): 0.0001 meters^2
Minimum elevation: 20 degrees
Position DoP mask: 10.0
Time DoP mask: 10.0
Position accuracy mask: 40 meters
Time accuracy mask: 40 meters
Static hold threshold: 0 cm/s
Dynamic GNSS timeout: 60 seconds
Threshold above C/No: 8 satellites
C/No threshold: 40 dBHz
Static hold max distance: 0 meters
UTC standard: USNO
Time pulse 0 enabled: yes
Use frequency vs. period: no
Use length vs. duty cycle: yes
Lock on GPS frequency: yes
Align to top of second: yes
Polarity rising edge: yes
Time grid: UTC
Antenna cable delay: 56 nanoseconds
RF group delay: 20 nanoseconds
Locked pulse period: 1000000 microseconds
Unlocked pulse period: 1000000 microseconds
Locked pulse length: 500000 microseconds
Unlocked pulse length: 0 microseconds
User configurable delay: 0 nanoseconds
Measurement rate: 1000 milliseconds
Measurements per fix: 1
Time reference: GPS
Power setup: Balanced
Period (if interval): 0 seconds
On time (if interval): 0 seconds
I have some personal experience that really drives this home. When I was in the U.S. Navy, back in the '70s, I worked on a system called SINS (for Ship's Inertial Navigation System). There's some specific information on SINS here, and on inertial navigation systems in general here. In the '70s, long before GPS, these were the state of the art in navigation. A SINS system occupied a fairly large compartment shipboard, used huge amounts of power, and it had a low reliability (in my own experience, less than 50% up time). The information it provided degraded in accuracy the longer you went since a calibration (against a known point on the earth). At its best, at least when I was observing, it would put you within a mile or so of your actual location. As bad as that sounds, that was far better than the alternatives available at the time. That GPS in the photo above is smaller by far than the smallest piece of electronics in SINS – and far more accurate and reliable. Not to mention cheaper! A SINS system had to cost several million dollars in today's money; that GPS cost me under $100. Amazing!
Wednesday, November 8, 2017
Monday, November 6, 2017
My little C program is shaping up nicely. It's not so little any more – it's just over 3kloc (three thousand lines of code, for all you non-geeks). It's been a terrific learning exercise for me, just what I needed for “reentry” into the world of low-level programming.
When I quit working on code yesterday afternoon, I had a problem that was vexing me: unreliable communications (via serial port) with the GPS, using the U-Blox proprietary UBX protocol. Fixed in my head was the notion that the problem was caused by the fact that the GPS was transmitting both UBX and NMEA data on the same wire. I imagined that the GPS was behaving stupidly, interleaving the bytes from each protocol. This morning while I was taking my morning shower, an alternative theory came to me – one that would be much simpler to fix. It's amazing how often I have solved (or at least made progress on) problems while taking a shower. Something about that activity is conducive to insights. Anyway, the alternative theory was simply that when I was sending a UBX command the host computer's UART receiver was out of sync with the data stream being transmitted by the GPS. This would only be an issue if the receiver had been fed a stream of NMEA data before trying to read a UBX message. I made a quick change to my code to force synchronization before any UBX operation, and poof! – just like that my reliability problem disappeared.
Obviously I need to take more showers! :)
Sunday, November 5, 2017
We let the dogs outside to play in it, and they had a ball. Short video at right, a few photos below. This may well be Ipo's first sight of snow: we believe she spent last winter in Florida, with her then-owner. If this was her first snow, she certainly seemed unfazed by it. Miki (first photo) was more like “Oh, crap, we’ve got this again?” ..
Friday, November 3, 2017
Then here's a report from my GPS (extracted with the work-in-progress program I'm writing), produced this morning:
Time (UTC): 11/03/2017 13:50:41 (mm/dd/yyyy hh:mm:ss)There are several interesting pieces of information in there beyond the location. First, there's the fact that 21 satellites were used to calculate the 4D fix (the four Ds are: latitude, longitude, altitude, and time). These satellites were part of three independent satellite systems: the US's Global Positioning System, The EU's Galileo, and Russia's GLONASS. The accuracy of the 4D fix improves as the number of satellites used goes up, and with 21 satellites that accuracy is darned good. Of most interest to me is the time accuracy, as that's what's synchronizing my NTP server. The GPS is reporting that its time signal is accurate to within 12 nanoseconds (that's 0.000000012 seconds). That will do just fine!
Latitude: 41.58308650 N
Longitude: 111.84003970 W
Altitude: 4868.373 feet
Motion: 0.007 mph at 0.000 degrees heading
Satellites: 21 (used for computing this fix)
Accuracy: time (12 ns), height (+/-2.169 feet), position (+/-1.654 feet), heading(+/-169.961 degrees), speed(+/-0.029 mph)
If you're wondering about that reported motion, first of all 0.007 mph is a very slow motion indeed: about one tenth of an inch (2 mm) per second. Most of us would not distinguish between that speed and motionless. :) But why isn't it zero? That reported speed is the result of a small amount of “noise” in the GPS fixes. From one fix to the next there is always a slight variation in the calculated location, even though the actual location isn't moving. That “fix noise” looks like some very slight motion to the GPS, as it is exactly what would happen if you actually were moving ever-so-slightly and there was no fix noise...
Thursday, November 2, 2017
That same evening, I was playing with our dogs just before the sun disappeared. Our three younger field spaniels (Mako, Cabo, and Ipo) were having a fantastic time tussling with each other at 90 MPH. Race did his usual trick of bringing a stick for me to throw, laying it on the ground in front of me, and then just looking at me until I threw it. All the photos below are from that session:
I did some careful planning to fill a bucket will everything I might need while working on the roof. This almost worked. :) It turns out I forgot an adjustable wrench, so I had to come back down once for that. Otherwise, the entire installation went smoothly out of the one bucket full of tools and parts.
The trickiest bit was sitting on the 25% pitched roof without sliding off the slippery steel. My roofers told me that they often worked barefoot, as their feet didn't slip nearly as much as their shoes did. I tried this, and it worked just fine. The walk from the ladder (at the roof's edge) to the peak (where the antenna was going) was maybe 15', definitely a tense distance, though short. Had I slipped and fallen, I'd have gone off the second floor roof, bounced onto the first floor roof (same pitch), and slid off the side of the barn from about 15' high. I was quite happy to have avoided this! While I was doing the actual installation, I straddled the peak of the roof, so I was quite stable. It was only that little journey from the roof's edge to the peak, and back, that was slightly terrifying.
Naturally I forgot to take photos of this little adventure. I was too busy trying not to fall off of my barn's second floor roof!
Once I had the antenna installed, I connected it to my little Raspberry Pi GPS board and started testing. On the first try, we had 12 satellites visible. A few hours later I had 17. My time accuracy is now reporting at +/- 2 nanoseconds – not bad at all! Best of all, after 12 hours of operation the GPS was reporting very high time and position stability – and this is before I've even configured it in a way optimized for timekeeping!
I still have some work to do on the NTP server project, but at this point its all fairly mundane stuff The C program I'm working on will form the heart of an NTP server monitor that I'll install on the Raspberry Pi. This will keep statistics on the accuracy over time. Then I need to build a little cabinet for the Raspberry Pi, so it can take its place of honor on my server rack.
Raspberry Shake 4D - a seismograph that reports into an international network. I assembled it and plugged it in, mainly to see if it was working, and it all seems to work just fine. I'm not sure where I'm going to mount it – it needs to be on the ground floor, preferably on the concrete slab, and somewhere with minimal vibration and noise. It might end up going in the basement of my home. The screenshot at right is off the Raspberry Shake network's station view. If you click to embiggen it, you'll see the little orange triangle NE of the Great Salt Lake that represents my station – the only one for a few hundred miles in any direction. Unlike the USGS seismograph that I had in California, this one's data is directly accessible – there's a network API that will let me download it. You can be sure I'll be playing with that!
Monday, October 30, 2017
It looks like she's being supervised by her dog, doesn't it? :)
The finished sculpture should have the mom mountain lion and three cubs; the two that aren't there yet will be to the left in the last photo. It's interesting to see how she puts together the armature with metal, and the (very!) rough shape with what looks like sheets of foam. It's all very abstract until the clay starts to go on!
Sunday, October 29, 2017
For example, I recall an engineer who worked for me, who (I discovered) really badly wanted to take a couple of months off for an around-the-world trip with his wife. I promised him that in exchange for solving a particularly tedious problem we were having with one of our products, a problem he was particularly well suited for. This worked for about four months; he plunged into the work with enthusiasm and was making great progress – until he got offended at a completely unrelated decision we'd made about another part of the product. In the space of a day or two he went from an energized, nothing-will-stop-me attitude to that of a defeated soldier. He gave up. The work didn't get done by him, and he didn't get his reward.
That sort of thing never happens with dogs. They're so much simpler! That tasty biscuit works every single time. Oh, I'd have given a lot for an engineering equivalent of a Milk-Bone!
As I write this, I'm listening to Tommy!, by The Who. It was released in 1969, and for whatever reason is one of the few dozen pieces of music from my youth that I remember most fondly. I listened to that album many, many times in my electronics “shack” (a converted chicken coop). I played it on an ancient Motorola stereo with a tube amplifier and 14" electrodynamic speakers, one that I picked up as not-worth-repairing junk from a TV repair shop. I still remember the experience of troubleshooting it, as it was a significant learning experience for me. I had no schematic (or any other documentation) for it, so the first thing I had to do was to reverse-engineer a schematic. I ended up with about 10 sheets of paper with a pencil schematic. Then I had to figure out how it all worked, and man, that was hard! There was so much in that design that I'd never run into before. Finally, once I understood (or thought I did!) how it was supposed to work, then I went to work troubleshooting it. I didn't have an oscilloscope, so I came up with a “poor man's” approach. I started with a little signal injector – a simple oscillator that sent a (roughly) 1KHz tone into the input from the turntable cartridge. Then I built a little amplifier and a capacitively-coupled probe that let me touch points within the Motorola's amplifier to see if there was a signal there. I worked my way through several stages of pre-amp to the first stage of the power amplifier, and there I found the problem: a shorted capacitor. So simple! I replaced that capacitor and voila! – I had a working stereo. Every time I hear Tommy! it takes me back to that experience...
source). It confirms something I suspected from my own experience: people these days are saving (for all reasons, including retirement and buffer) at a much lower rate (~3% of disposable income today, versus ~12% in the '60s) than they did when I first entered the workforce (in the late '60s). I don't know the reasons for this, but clearly some of it is a changing culture, part of the more general trend of people not expecting to have to handle the consequences of their decisions. Anecdotally young people today seem much more likely to expect government intervention to support them in retirement. When I've pressed people for details about this belief, I haven't run into anyone who has specific notions. Everyone seems to dismiss Social Security as adequate for retirement, and many have a vague notion that the government will “do something” to provide for them in their retirement. I saw figures recently (can't find them now, though) that less than 20% of people aged 50 had any means or even a plan for supporting themselves in retirement. They had vague notions, like cashing in the equity on their house, but nothing more.
It seems rather obvious that a lower savings rate, combined with increased longevity (and therefore more years in retirement), leads to a bad problem for our society in general. I don't understand why so few people seem to be concerned about this. In that respect it reminds me of the under-funded pension problem hanging over so many cities, counties, and states. Another very obvious problem, with relatively little general concern. I'm very concerned about both, because I strongly suspect that in order to cover these deficits, the government will be trying to come after anyone who has assets in retirement. Like us, if we live long enough...
This morning I walked from our house to our barn at around 6 am, and the skies were particularly dark. Orion was high in the southwest, the Pleiades in the west. As I was staring up at them, a big meteor, orange fireball, plunged straight down from between them. I could even make out some smoke trail, so it must have reached a fairly low altitude. The fireball was extinguished just before it would have disappeared behind the Wellsville Mountains from my perspective. Beautiful!
Today is bookkeeping day for me. I've got to catch up from my neglect over the past 10 days or so...
Friday, October 27, 2017
Debbie's coughing persists, so yesterday morning we ventured off to the urgent care again (if you're counting, that's the fourth time since she first got sick on the 7th). We were ... less than satisfied with the outcome there. The doctor on duty listened to us politely. One of the things we told him is that the cough medicine Debbie had used for years to combat her cough-after-a-cold problem was benzonatate – but it no longer worked for her. He recommended that we try a different cough medication. We went to the drug store, picked up the prescription he gave us – and it was benzonatate in brand name form!
At that point we decided to make an appointment with our GP, despite the fact that we might have to wait a while to see her. Debbie called in, and it turned out that our regular GP was out on maternity leave (she just had a baby boy), and would be until January. But ... there was a doctor covering for her, and we could get in on that very afternoon. Awesome! So off we went again, to see the new doc. This fellow we both really liked. In fact, Debbie's first comment upon leaving was that she wanted to switch GPs to him. :) He listened, was full of questions and comments, and had a cracking good sense of humor. We were most excellently entertained, and we left with a smile, a prescription for hydrocodone-based cough medication (the only one that's worked for her this year), and an inhaler that he thought might well help. An hour later her coughing had stopped. Last night she got her first good night's sleep in over a week.
In between trips to the doctor, I beavered away on my C program again. Right at the moment I'm writing a replacement for the ancient getopt library. I've got getopt working, so I really have no need to do this – but I'm offended by the unnecessary complexity of its API. Further, writing a replacement looks like a tasty practice exercise to me. So far it's turning out to be simpler and easier than I was anticipating, which really makes me wonder why it wasn't replace aeons ago...