Google Home vs. Nest Audio: which sounds better?

It goes without saying that the Nest Audio wins this contest hands down. But perhaps it’s not clear just how much better the sound is out of the Nest Audio.

Granted, the Home was released a veritable lifetime ago as far as consumer electronics aging goes. But if you’re sitting on a Google Home or two you’re probably not worried about the age of the device – I mean, it still works and it’s still updated – but rather whether there’s any reason to spend the money to treat your space (and ears) to a sonic upgrade. Basically – is there a reason to upgrade?

Well… yes. Now, full disclosure: I’m not one to upgrade my technology just for the sake of upgrading. There has to be a compelling, useful feature that the upgrade presents that the current device – or devices – does not. And even then the actual decision may be delayed just to make sure I’m not spending impulsively.

So in the case of the Home, it became clear that its audio just wasn’t matching the mid-range and high-range clarity of the Home Max or even the Home Hub Max. This became more obvious as I’ve recently started doing more listening on speaker groups, mostly listening to radio or music on all of the speakers on the main floor. The Home’s deficiencies were on display as I moved throughout the house.

Even so, at CAD$129 it didn’t seem to make sense to upgrade. I can’t believe that I’ve become a deal-seeker, but why not? It also helps to curb impulse buying if one at least waits for products to go on sale, so that’s what I did. And at CAD$99 the Nest Audio is more compelling, coming in at the same price as the Home was when I initially bought in if I recall correctly.

Ok great – but what are my impressions?

Well, first of all I was surprised by two things: the weight of the Nest Audio (considerably heavier than the Home) and the size (smaller than I was expecting, at roughly the same height as the Home). Then once the device was configured and I sent audio to the speaker group, I was again surprised: was the bass I was hearing coming all the way from the Home Max on the other side of the house, or was this little Nest Audio really hitting these impressive lows???

It was the latter. The Nest Audio represents a significant leap in audio quality over the Home. Like, night and day. It’s much clearer over the entire frequency range, and it actually produces discernible, clear and meaningful bass frequencies. Now, it does seem a little quieter than the Home, which seems to be the trend with all of these speaker upgrades that I’ve written about. But the sound is so much better at reasonable listening levels that I really do have to recommend the Nest Audio to anybody who has been holding on to their Homes for a number of years.

Which doesn’t mean that you should get rid of the Homes. Redeploy them if you can, or gift to somebody who’s new to the Google ecosystem or somebody who could use some more sources of audio. The Home is still capable and as I said earlier it is still supported. But if you have particular areas that can benefit from better audio – larger rooms, or primary listening areas – then go for the upgrade.

Now I just have to resist the temptation to upgrade my two remaining Homes before the sale ends 🙂

Wear (OS) have you been?

So way back in 2014 or 2015 (or 2016?) I decided to dive into wearables with the original Moto 360. It wasn’t a straightforward decision mind you; I had a number of mechanical watches that I liked to wear so the biggest conundrum was what to do with those watches – and the fashion options that they posed – if I went with the smartwatch.

Truthfully the two really are mutually exclusive. If you opt for a smartwatch it necessarily means that there are “smart” features that you want to use which would be unavailable to you when wearing a traditional watch. It really seemed like a one-or-the-other lifestyle choice.

I got around the problem at the time by thinking more about how I’d use those “smart” features. And it dawned on me that in pre-COVID times I would be sitting at my work desk Monday to Friday with my phone on said desk and within easy reach. If I wanted to check an incoming notification the phone would be right there, so there really was no need be notified on my wrist as well. And since this was before heart rate monitors and step counters, it really did come down to whether or not I was going to receive notifications on my wrist

BUT – on the weekends and on some evenings after work it made sense to receive notifications on my wrist, because my phone might be in my pocket where I either might not feel the vibration alert or might be otherwise engaged and unable to easily fish the phone out of my pocket. Given that I’ve culled my notifications down to only those that are most important (no Facebook or Twitter notifications here folks), having a smartwatch at those times actually seemed like a very good idea.

So that was it then. I wore the 360 on the weekends and stuck with my traditional watches while at work.

And this mostly worked. Eventually the 360 died – somewhat as a result of this schedule, but that’s neither here nor there – and I opted not to renew my membership in the wearables club.

Why?

Recall that the 360 was among the first group of Android smartwatches. And there were warts. Performance, battery life (both for the watch and the phone), occasional disconnects – those things weighed on the experience to the point that I couldn’t justifying dropping hundreds of dollars again.

That all changed a couple of weeks ago.

I’ve started seeing more and more people sporting smartwatches – both of the Apple and Android variety. I don’t tend to follow trends, but it had become clear that wearables were no longer a trend and had become much more mainstream. And I had kept abreast of developments in the Android Wear world – now called “Wear OS” – and the various hardware options.

In particular the Fossil watches had been getting good reviews for their performance – thanks to their generous memory – and all-day battery life. Sooo… I decided to wade back in once Fossil held their latest Black Friday sale.

And can I just say – I’m impressed!

It may be the perfect combination of great battery life on my phone (which is also fairly new) and on the watch but I can honestly say that I’m not experiencing any negatives after 2 weeks of sporting the Gen 5 Carlyle HR. I also imagine that COVID has contributed to the experience – imagine that – since all of my mechanical watches have dead batteries and going to a jeweller is both a safety issue and seems strangely antiquated.

I’m not one to use apps apps apps on my wearable, so it’s no surprise that battery is good. To me a watch needs to be a watch first, so to that end I’ve enabled the always-on display and actually disabled lift-to-wake and tap-to-wake. AOD takes a hit on battery, but turning off the digitizer and the sensors seems to counter that – so that I recently got 1.5 days at of regular use and threw the watch back on the charger after another 0.5 days in time-only mode. The battery wasn’t exhausted, but I did want the smart features back.

And let’s not even talk about the convenience of Google Pay on the wrist when going through a drive thru. And adding heart rate info to my fitness data is also a plus.

Yes, I’m very happy with the Gen 5 Carlyle. So much so that I’ve already ponied up for additional watch bands. I can see now why these things are becoming more and more mainstream. They serve their primary purpose as a watch, and when used properly they actually serve the additional purpose of simplifying your digital lifestyle. Win-win in my book.

Google Home vs. Nest Home Hub Max: which sounds better?

A little while back we added a Nest Home Hub Max to our collection of smart home devices. The Hub Max was intended to replace a Home that we use in the kitchen. And given the wife’s preference to blast music on that device, I attempted to do my due diligence in researching the topic:

“Does the Nest Home Hub Max sound better than the Google Home?”

But the answers weren’t forthcoming. Given that one device has a display and the other does not, perhaps it’s the case that the two devices are not often cross-shopped. Regardless, I took the plunge and thought I’d return the Hub Max if it performed poorly.

Before going any further it might do you some good to read about ten paragraphs into this post, where I talk briefly about my experience with replacing a Sony mini bookshelf system with a Vizio SP-70 Crave Pro speaker. Here’s the main takeaway:

Crave Pro […] the music reproduction was something altogether different from the Sony.  Again, the Sony is louder and has boomier bass.  But… but… does that make the Sony better?  Because, truthfully, the Pro actually has a wider soundstage and richer bass at moderate listening levels.  It can’t get as loud as the Sony while maintaining the same composure that the Sony can, but… it can get loud enough

Thing is – my experience with the Nest Home Hub Max and Google Home was altogether similar.

The Home seems to go louder than the Hub Max – but, the Hub Max has a much more pleasing sound. Its bass is richer compared to the Home, while the latter’s is more boomy. And, likely due to the inclusion of the two front-firing midrange/highrange speakers, the mids and highs are reproduced more faithfully on the Hub Max – even when the music is played louder.

My impression has only improved over time, much as it did with the Vizio vs. the Sony. And as with that latter comparison, it has become apparent – again – that music doesn’t need to be cranked to be properly enjoyed.

If only the wife felt the same. Nonetheless, I’ve tried to tune the bass and treble settings so that when she does (frequently) crank the volume past 7, the sound at least holds together as well as can be expected for a speaker of this size.

So there you have it. If you’re looking for better sound, you’ll be happy with the Hub Max. If you absolutely need that boomy bass and are looking to go as loud as possible – stick with the Home.

IPv4, IPv6, NAT NVI, and Google Cast – this fortnight in my world

Yes, it’s been a whirlwind 2 weeks!

First things first – I hope that you and your family are safe, happy and healthy.   I have many thoughts concerning the various trials that we are currently facing – but for now I’ll keep things light and let you know about the fun time I’ve had with protocols, address translation, address prefixes, Apache configs… ya, it’s been fun.

So this all started out with a desire to up my Internet bandwidth game in the hopes of going IPTV.  The idea was to finally ditch coaxial cables and to take advantage of better pricing.

I’ve always run my own router, relegating the ISP-provided equipment to a simple bridging configuration.  However, I’ve been tied to Cisco (!) routers since beyond time, as we use Cisco equipment at work and I like the flexibility – and familiarity – that the equipment affords.  The problem has been that Cisco equipment has tended to have lower overall throughput than the typical router you’d find on a shelf at Best Buy, while costing way more.

And the truth is that my Cisco config is somewhat more complex than a typical home router config.  Sooo…. I stuck with my trusty 881 until I decided to pull the trigger on a 921-4P.  The 921 gave me my full 150Mbps of downstream bandwidth – and then some – so I was in position to go the IPTV route.

That is, until SARS-CoV-2 hit and no self-install option was put forward for Digital TV customers to upgrade to IPTV.

Truthfully it may be a “blessing” in disguise, as I’ve read mixed reviews concerning the reliability of my provider’s IPTV offering.  Most reviews are positive, but the last thing I need is for the WAF to drop due to inconsistent viewings of Island Life on HGTV.

But hey, at least my downloads became about 3x faster!

Switching gears.  The next challenge was to revisit something that had been a thorn in my side for a long time.  See, your typical Best Buy router may do something called NAT Hairpinning, which allows clients on the LAN to access local servers that have been given an address translation on the WAN side.  Basically, you access a machine on the LAN using its translated public IP address.  Cisco routers can do this as well using something called a NAT Virtual Interface – NAT NVI, or just NVI – but it saps performance.  My 150Mbps (sometimes as high as 250Mbps+) dropped to under 100Mbps when running NAT NVI.

Why bother with NAT NVI in the first place?  The truth is that I’ve been making do without it for a number of years now.  I run my own internal DNS server which means that I can answer all DNS queries with the inside IP address.  Why bother?

Google Nest Hub and Nest Hub Max, that’s why.  We have a number of Google Assistant-enabled smart devices in our home, and for whatever reason Google has sought fit to have these devices try 8.8.8.8 and 8.8.4.4 for DNS resolution before trying whatever DNS server you’ve assigned via DHCP.  I’ve worked around this in the past by blocking access to Google’s public DNS servers, but Google got really crafty with the Nest Hub and Nest Hub Max and they started resorting to using DNS-over-TCP (encrypted DNS), and I think they even use the IPv6 addresses for their public DNS servers if IPv6 is enabled.

But wait – why is this a problem at all???  Who cares what DNS servers those devices use?

I care friend.  I care.

Actually, my Cast receiver app cares.  The one I’ve written about ad naseum on this very blog.  The one that’s hosted on my LAN and only really of use on my LAN.  The one that allows me to throw my music around the house in whatever manner I see fit, rather than relying on Google Play Music, Google Flavour-Of-The-Month Music Streaming Service, or YouTube “Do you want to keep listening?” Music.

Running said Cast app requires that the Assistant and Cast devices connect to a server on my LAN.  This requires that they resolve the URL registered with my app to an address on my LAN.  This requires that they use the DNS servers on my LAN.  If they don’t/can’t/won’t do this – like, oh, our Nest Hub friends don’t/can’t/won’t – then I can no longer cast my music to said devices.

So that was the dilemma.

And I’ll say again – this all worked with NAT NVI.  But I wasn’t willing to take the throughput hit.  It just didn’t seem right.

Also – congrats for making it this far.

You may be wondering: “How does IPv6 fit into all of this?”  Well, IPv6 is something I had ZERO experience with prior to 2-3 weeks ago.  But now?  Hey, I’m running dual-stack my friend!  IPv4 and IPv6 are in the house!  I even rely on IPv6 as a solution to my Google Cast woes while still running traditional NAT and getting back my 150Mbps+ downstream goodness!

Here’s how it works:

I gave up (mostly) on trying to manage DNS for Google’s devices.  If they want to use Google’s public DNS servers, they can use Google’s public DNS servers.  In exchange, they have to resolve my receiver app’s URL using IPv6.  In a nutshell: I changed the receiver app’s URL to one that only resolves to an AAAA (IPv6) record externally.  Internally (on my LAN), that same URL resolves to an RFC1918 IPv4 address.  If a dual-stack device attempts to resolve the URL using a public DNS server, it will get the IPv6 address.  If it resolves using my internal DNS servers it will get the private IPv4 address.

The reason why this works is that IPv6 was designed so that NAT would not be required.  The idea is that every device on the planet can have a unique, publicly-routable IPv6 address.  Since NAT is no longer part of the equation for an IPv6 host, a Nest Hub Max that resolves my receiver URL to an IPv6 address will simply connect directly to the server’s IPv6 interface on my LAN.  A device that resolves the IPv4 address will do the same, using the server’s IPv4 interface.

And any device that resolves the URL externally will hit the router (firewall) and go no further.

Seriously.  That’s it.  It’s crazy how simple it is.

Obviously the implementation is more complex than it seems.  My public IPv4 and IPv6 allocations are dynamic.  I’ve had a solution in place for some time to handle changes to my IPv4 public IP (nothing magical there, just look up Dynamic DNS for more info) but I had to figure out how to deal with changes to my IPv6 address.  This also meant that I had to do some reading to understand how IPv6 works.  As it turns out, my ISP gives me a /64 IPv6 prefix.  This is combined with another unique 64-bit address to form the entire 128-bit IPv6 address for a particular host.  The 64-bit host portion doesn’t change, so I only need to routinely check the IPv6 prefix and update my dynamic DNS entry when the prefix changes.

Things got even more complex because Apache needs to understand if a client is on the LAN or coming in from the WAN.  This also necessitated upgrading my Apache server – which also became a good time to move it to another virtual machine.  I won’t get into how I accomplished everything but suffice it to say that it was the most straightforward problem to solve in this entire mess.

So there you have it.  Check back with me in a couple of weeks to see if everything is still working.

What’s my legacy?

Over breakfast this morning I asked my 10yo son what he had dreamt about last night.  He proceeded to tell me about all the weird and wonderful things you’d expect a 10yo boy would dream about.  Some of it was based in reality – again, as you would expect – but for the most part it was standard silly fare, albeit interesting to hear.

At one point he started talking about being on a rollercoaster, and – oh yes, you were there Daddy – and then blah blah blah…

…I had drifted off a little, because his words gave me pause.  As casually as he had mentioned it, and as obvious as it might seem that a child may dream about their parent, what hit me at that moment was the realization that my existence transcends my own consciousness and is an integral part of another human being’s consciousness.  Again – obvious – but hearing it come from the words of a dependant child, whose very existence is a direct result of my own existence, got me thinking about my place in this world.

Some people think about their legacy.  How will they be remembered?  What will they build?  What will they achieve?  We spend a lot of time planning, and perhaps even envying others who’s accomplishments seem so grand compared to our own.  But we don’t stop and think about the legacy that we leave each and every single day.  Parents in particular are probably the most guilty of this, because the daily struggles of child-rearing often leave little room for us to reflect on the lasting legacy we embed in our childrens’ minds, bodies, and souls.  We spend so much time on the mechanics of the daily realities of life – school, meals, morning and evening routines, extracurricular activities, etc. – that we fail to remember that we are literal giants among these little men and women to-be; actual hand-holding guides during the many formative years that they will face until they’re ready to let go and continue along their own path

And as usual, it takes the words of a child to make us stop and see the simple truth in these things: You were there Daddy.

This is a time of year that’s a little poignant for our family.  I recall the passing of a member of the previous generation, a person who – at their passing – also reminded me of the other members of that generation who passed, all of whom left this world without grand legacies, no buildings emblazoned with their names, no tales enshrined in textbooks.  It’s a generation that was not priviledged, that often times had to struggle, a generation that may have displaced themselves to find better opportunities – to find more fertile ground.  They endureed, as giants for their own little men and women to-be.  They endured for my generation.  And now, their torch is ours.

Their legacy is strong.

2018 Gift List

Oh ya… I’m supposed to put one of these together right?

  • Tesla Model S P100D
  • Tesla Model 3 Long Range
  • Black leather gloves
  • Fashionable black leather boots, size 12-13 – flexible sole is a must!
  • Black casual socks
  • Track pants (RECEIVED!)
  • Jigsaw puzzle
  • Black braided leather belt, size 34 waist

As always – keep tuned, this list is subject to change without notice

More Cast, more Mobile

Just more development things.

Some of you (who are you?  WHO ARE YOU?!?!?) may have noticed the following in a recent blog post concerning the Vizio SmartCast products:

Whatever transport controls the speaker supports are hidden away as swipe and tap gestures within the ring.

Truthfully there are only two supported gestures: play/pause (the “tap”) and next-track (the “swipe”, which can occur in any direction).  And being the deranged soul I am, and in the name of Progress(tm), I decided to dive down the rabbit hole that would hopefully end in being able to use these gestures to control my (11-year-old-)music system.

Some background.  What I really like about Cast is that it really does provide a comprehensive bridge to the hardware that’s rendering your content.  I talked briefly about the API’s messaging abilities and how I primarily use my own messaging solution to have clients (“remotes”) talk to the Cast devices (as “renderers”).  But I have to say, there was an embarrassing level of giddiness on my part once I was able to turn said ring on the Vizio devices and watch volume level automagically change in my music system interface.

That sort of dark magic is powered in large part by the messaging features in the API.  And the closer you come towards full Cast API compliance, the more your powers level-up:

  • rich media metadata (including images) in the Google Home app and Cast notification
  • a track scrubber that updates in real-time on certain Cast clients
  • interaction via the (much maligned-)Cast nofitication that appears on your Android device when something is Casting on the network

Sooo… like some Dr. Frankenstein groupie I’ve settled on an implementation that mixes Google’s magic with my own amateur code and the result is something wonderful, horrible, and awesome to behold!

Riiight.

Sparing the hyperbole: I got to the end of the rabbit hole, and can now use the Vizio gestures to control the music system.  I’m listening for the transport messages (as defined by the Cast API) coming from the Vizio devices and acting upon them.  These tend to map directly to the transport controls that would otherwise appear on the web player, but which are hidden when the player is running on Cast.  I’m also responding to Cast status requests that various clients send (including the Vizio devices).  And to top it all off, in the case where a Cast-capable client is actually connected to an existing Cast receiver session, I’m using the Cast messaging API to send transport messages to the receiver app directly – again, these map to the hidden transport controls on the receiver.  This happens in place of using my remote/renderer messaging solution.

Cool.  What else?

Is that an app in your pocket, or…?

Accessing the music system while out and abroad has taken on many, many, many different forms over the years.  Names that come to mind:

  • GSPlayer
  • XiaaLive
  • Winamp

All of these things were eventually replaced by the web player powered by HTML5’s AUDIO tag.  And that’s great and all, but for mobile in particular I’ve wanted something more streamlined and purpose-built.  Plus it’s been an ongoing battle going up against things like “Gesture requirement for media playback” and Chrome’s tendency to kill timers on tabs that have been backgrounded for some time.

I’ve toyed with writing an app to resolve this but – newsflash – I didn’t write one, and I still haven’t written one.   What I have been angling for instead is to backdoor my web player into some container that would let it have all the rights of a native-app citizen, kind of like I backdoor’ed the web player into Cast as a receiver app.

And the good news is that there’s a lot of work underway to make first-class citizens out of web apps. Progressive Web Apps, Instant Apps, even the old “mobile-web-app-capable” meta tag that started it all.

So to that end I’ve finally gotten to a point where most pages are presentable/usable on mobile.  And, crucially, the web player will pin to the bottom of the page and stay there while you navigate the site.  And boy was that fun.  Remember, I’m not a design guy – so getting this thing to work in portrait/landscape wasn’t pretty (and the CSS/JS still isn’t pretty, but whatever).

Anyhow we’ll see what container this thing eventually ends up in (Cordova app?  Tasker app? PWA? Is “Add to Homescreen” enough?)  I’ll report back here once I know more 🙂

Display-capable Cast UI

I mentioned in some other post that I’d post a picture of the UI I designed for display-capable Cast devices playing music from my music system. So here’s an example:

This is taken on my tablet set to impersonate a Cast device, so the UI is a little more cramped than it appears on a TV.

Pretty much sums up the experience though.