Wednesday, November 29, 2017
We've long had plans to use that leftover granite slab – beautiful rock that Debbie located while we were building our new bathroom in 2014. We had to get it shipped from San Diego to Tremonton, where Valley View granite is, and then they worked with us to get us exactly what we were looking for. They did spectacularly good work; that vanity top is the centerpiece of our very pretty bathroom. But it only used about 1/3 of the slab we bought – the prettiest 1/3, but the remaining 2/3s was still beautiful rock.
So today we drove down there to claim our slab remainder, and to start the process of fabricating shelves from it. Those shelves are going to go in my office, where I'm in desperate need of storage space. They'll make gorgeous shelves! I'm going to make wooden corbels from 4x6 sections to hold them up; it should be an attractive combination of materials.
While we were in Tremonton, we had ourselves a little lunch, at a restaurant we've never been to before: The Grille. We both had the smoked pulled pork sandwiches. Debbie got hers with fries, I got baked beans. The sandwich came with a very fresh cole slaw, the sauce the perfect blend of sweet and acid. For me the highlight of the meal was an unlikely one: the baked beans. These are obviously homemade, with lots of meat (cubes of ham, pieces of bacon, and bits of beef) and veggies (mostly onions and green peppers). The sauce had a smoky barbecue flavor. I could easily have made a meal of a big serving of those beans! But the smoked pulled pork was also excellent, as was the bun it was served in (homemade, we think). The sandwich came with a selection of six different sauces to put on it; I liked the plain barbecue, and Debbie liked the “barbecue ranch” – a 50/50 mix of barbecue sauce and ranch salad dressing. We were both very happy with that meal, and I strongly suspect we'll be back there again when something takes us to Tremonton...
Tuesday, November 28, 2017
a remote-controlled relay, controlled by RF through a little transmitter. At $13.95, I could hardly complain about the price. In fact, that's so cheap I was worried about it being junk – though the photo looked like a well-made device. I took a chance and ordered it. It came very quickly, and I opened it up to see if it matched the photos. It did, in every respect – and with the opportunity to make a close inspection, I'm actually pretty impressed with its design and construction. The relay is a hard-contact relay, which made me feel better about hiding it in the wall: those old-fashioned relays are more likely to fail than a modern solid-state relay, but much less likely to burst into flames under any failure mode.
So yesterday I dragged out my tools and started making holes in the kitchen wall. To Debbie's credit, she didn't panic when I took out my oscillating saw and attacked the wallboard. :) The only real challenge to the project was getting the wire from the outlet down low to my new hole up high. I used a fiberglass rod “fish” to get through a new hole in the outlet's box to my new high hole; that worked out quite nicely. The rest was just screws and wiring. When I got it all hooked up, I took out the remote control – and it all worked on the very first try. That's $13.95 I'm very happy to have spent!
This morning we're headed down to Salt Lake City to raid MacBeath Hardwood. I've never been there, but it looks like a place I will actually enjoy shopping in. We'll likely stop again at Caputo's, at the very least to pick up another panettone (we got one last week that was simply outstanding). I suspect we'll also be grabbing some lunch down there...
Sunday, November 26, 2017
Last week Debbie and I journeyed down to Salt Lake City to get a recall issue in our Model X taken care of. The issue was of almost zero importance to us (the left back seat might accidentally fold down in a sudden stop) as we only rarely have any passengers in ours, and the rear seats are almost always folded down. But we did it anyway. It took longer (over three hours) than we expected, but when we got our car back to our surprise it had been detailed. They hollered at me for not having replaced my tires yet, and tried to sell me a set of the same kind shipped on our car. I turned that down, and instead went (on Friday) to our local Les Schwab's and had a set of Toyo tires installed: much heavier tread, stronger sidewalls, longer tread life, less money, and I got to patronize a vendor who has treated me very well in the past. Once again they provided great service, alerting me to a slightly bent wheel (not a current issue, but might become one) and doing a fantastic job of balancing the wheels. The 22" wheels considerably limit the selection of tires available, especially because the rear tires are a different width than the front tires (this makes it challenging to find matching tires).
On that same trip, we had lunch at Bambara's, a new place for us. Short review: it's excellent, and we recommend it. We both had their silky corn bisque, and we were very glad we did – that's one outstanding soup. Debbie had a seared ahi nicoise, which she devoured while making happy noises. I tasted the fish; very good, it was. I had a chicken club sandwich with bacon and roast tomatoes on homemade ciabatta bread; also excellent. One big surprise for me: the fries that came with it were outstanding, and I am not normally one who gets excited about fries. Just as much fun as our food was our server, Brad. We were there after normal lunch hours and he wasn't busy, so we got to have quite a nice conversation. The whole experience was most enjoyable.
Before lunch we spent a couple hours at the Utah Museum of Natural History, concentrating on their Viking display. It wasn't crowded, a pleasant surprise. The display was very well done, and most educational. Debbie and I both came away with a very different impression of the Vikings than we'd had previously. My big takeaway was the quality of their craftsmanship – they made some truly beautiful things of wood, bone, and metal. Debbie's big takeaway was how small they were – she was expecting them to look like Thor in the Marvel series, and the truth is they were more the size of my dad (who was a small man by today's standards).
I'll wrap up with a less cheerful review: Jimmy John's “gourmet sandwiches”. This is a place that was highly recommended to me by several local acquaintances, but I'd never tried it before – mainly because whenever I felt like a sandwich I'd go to Logan's Heroes, which has about the best sandwiches I've ever had in my life. But for some reason I can't recall, a few days ago I decided to try Jimmy John's. The most positive thing I can think of to say about the experience is ... at least I know now that I need never think of going there again. Oh, and I didn't actually get sick, and the service was amazingly fast. Self-serve at the local dumpster would be fast, too – and probably just as good. And have more meat. And fresher bread. And cheaper. You get the idea...
Saturday, November 25, 2017
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: