just one more geek in a sea of austin techies

May 25, 2024

Substance Over Style

Warning: mini-rant ahead

For years I've maintained a quiet argument with American grammar-style rule-followers.  This argument is different from my other style argument concerning Americanized dates (it should be the international standard YEAR-MONTH-DAY, not MONTH-DAY-YEAR) but that's fodder for a different post.

Despite that fact that I am American-born and American-educated my argument concerns the American practice of including as part of a quoted value whatever punctuation immediately follows that quote.  For example, in the sentence:

  Stephen said the name of his lawn business is "Yard Masters." 

The business name itself almost certainly does *not* include a period and so was not actually part of the quote from Stephen.  The practice of enveloping non-quoted punctuation into preceding quoted text may seem rather unimportant.  In this example most people would assume the business name is "Yard Masters" with no period.  Even if someone mistakenly believed a period was part of the business name it's hard to imagine any serious negative consequences of doing so.

People who deal with the necessary preciseness of computer code, however, should be at least somewhat irritated at this practice.  Instead of quoting a business name, what if the sentence were:  

  Stephen said the code to disarm the explosive is "n0b!0w." 

The inclusion of the non-quoted period as part of the quote now has very serious consequences.

When pressed with this dilemma the normal response from grammar experts is to restructure the text so that the quote is no longer at the end of the sentence, such as:  Stephen said the code "n0b!0w" will disarm the explosive.  This is an effective, though somewhat clunky, workaround.  Unfortunately it is not a workaround you can depend on -- you will still get cases of people including quotes at the end of sentences (or immediately preceding a comma) so the issue persists.  I was recently reminded of this in some Google technical help instructions:

Following American grammar convention results in incorrect information in Google's instructions.

In the case of Google's instructions shown above, users who wish to maintain privacy by opting out of Google Location services must append the text "_nomap" (with no period) to the end of their Wi-Fi access point(s) SSID names.  Unfortunately the writer of the instructions above decided to follow American grammar convention and included sentence punctuation within the quoted values.  The cited values end up being "_nomap." and "12345_nomap." (with periods included) instead of what the values should be: "_nomap" and "12345_nomap".  This is a critically-important technical distinction as anyone wrongly including a period will not opt-out as intended.  Worse, though, is that in this case there is no independent way to verify that a Wi-Fi access point has been successfully opted out so anyone who includes the period as quoted in Google's instructions will mistakenly believe they are opted-out when they are not.

We can argue that Google's writer should have restructured the wording to avoid having quoted values  appear at the end of sentences but the real problem is that American convention is to purposefully change such quoted text from an explicit value to an ambiguous value.

What I (usually) Do
In practice I typically end up using a hybrid of including/not including punctuation within quoted values.  If the piece of writing is conversational I'll lean toward American convention to help hold the rule-followers at bay.  If there is a quote with a critical value, or if the writing is more technical in nature, then I only include within quotes whatever is exactly the value intended.   Trailing punctuation  that's not part of the quote gets left outside of the closing quotation mark (as it should be).  For technical items where every detail matters it's better to be exact and run the risk of someone thinking I don't know my grammar rules rather than follow a style convention that (like the Google example above) results in wrong information.

<end of mini-rant>

February 6, 2021

PayPal, Bitcoin and Taxes (oh, my!) #CryptoGeek

Over the past year, PayPal's stock value has surged considerably along with many others in the online payments processing realm.  Indeed, prior to 2020 PayPal had already solidly established itself as the fourth-largest payments processor behind Visa, Mastercard and Discover.  PayPal is now the largest of all pure-digital payments processors with more currently-active PayPal accounts than the entire population of the United States.  
If this weren't already enough, in 2020 PayPal decided to go "all-in" on Cryptocurrencies like Bitcoin, Ethereum, and Litecoin.  You can now easily buy and sell Cryptocurrencies (a.k.a., "crypto") with a standard (free) PayPal account.  This move by PayPal brings crypto accessibility to the masses more than anything has before.  However, the masses are largely not up to speed with how crypto is different from typical currency and, perhaps more importantly, how spending crypto can have a major impact on taxes for US citizens.

The short version: 

  • Treat crypto like stocks, not money.
  • Every crypto transaction has end-of-year tax implications.
  • It is super-easy to get into crypto with a (free) PayPal account.  
  • You can quickly make or lose lots of money with crypto.

The long version: 
Read on...

December 29, 2020

MPOW BH079A driver for Win10 #BluetoothGeek

If you need to add Bluetooth to a Windows 10 PC it's harder to find a cheaper or easier solution than this well-reviewed $7 USB dongle from MPOW.  There are, however, questions about the safety of trusting included hardware driver CDs or even downloading drivers direct from lesser-known manufacturers.  Even the most honest of vendors is not guaranteed to have clean, virus-free driver installation software.  
If you purchase a device that is not automatically recognized by Windows then you face the quandary of trusting unknown third-party driver installation software or changing to a different hardware solution.

Such was the case with my own MPOW BH079A USB adapter purchase.  The adapter boasts a large number of great reviews and is compatible with many versions of Windows back to XP. Windows 10 did not, however, automatically detect and set up the device and I have a healthy distrust of driver CDs from lesser-known manufacturers.  To be fair, no MPOW reviewers cited any cases of malware but I still prefer to avoid software from lesser-known sources when possible.

Fortunately the adapter is basically just MPOW's casing wrapped around the trusty Broadcom BCM20702 Bluetooth single-chip solution which has been around for a decade.  Any official Broadcom BCM20702 Windows 10 driver should be all that is needed (e.g., the driver doesn't have to be from MPOW).

Although my MPOW USB dongle is being used on a home-built PC, I went with a Hewlett Packard (HP)-supplied Broadcom BCM20702 Win10 driver (circa 2017):

Install the driver then insert the USB dongle and it should be activated automatically -- no need to turn it on in Windows settings.  If you already had the USB adapter plugged in when installing the driver you may need to remove and then reinsert the adapter.


December 8, 2020

Save, then save, then save again #ShoppingGeek

We're well into the holiday shopping season as I write this but it's never too late for tips on saving money.  This year I've been doubling, tripling and even quadrupling my online shopping savings opportunities.  How?  With some new virtual takes on a few old payment standbys.

When everything is clicking, my best online shopping savings scenario is:
  1. Fill up my online cart with items
  2. Get a discount applied automatically
  3. Get part of the remaining balance paid for via saved credits (bonus gift cards)
  4. Get part of the remaining balance paid for via discounted virtual gift card
  5. Earn cash back on whatever balance is left that I actually have to pay
  6. Earn credit towards future bonus gift cards (see #3)
That is, quite literally, savings on top of savings on top of savings (on top of savings on top of savings).  I *do* have to jump through a couple of hoops to get things set up, but I'm frugal enough that I don't mind doing so when I consider some of the larger payments and purchases we make.  Read on to see how I stack up these savings...

September 25, 2020

eero 6: Will it work with original eero? #NetworkGeek

Will eero 6 work with
first-generation eeros?

The new eero 6 (link) and eero 6 Pro (link) lines of mesh routers and access points are now available bringing improved connectivity, faster wireless speeds and integrated Zigbee smart hubs.  

There are plenty of articles and reviews covering the improved features but I've yet to see anyone answering one burning question:  

What about existing eero owners?  Specifically, can existing (first-generation) eero mesh networks incorporate new eero 6 devices?  Or do existing owners have to replace their old eero units in order to upgrade to eero 6?

Read on for the answer...

December 8, 2019

6-month review update: UltraLoq U-Bolt Pro

Last May I shared info on my then-latest purchase of a crowdfunded item, the "UltraLoq U-Bolt Pro Combo".  This was a new, fancier smart lock from a company that was already shipping smart lock solutions with good reviews.  The new "U-Bolt Pro Combo" was notable in that it included a Bluetooth-to-WiFi bridge adapter for a smart deadbolt with access options including fingerprint scan, code entry, wireless entry (cell-phone proximity detection), and traditional key entry.

Was it any good, though?  YES!

Read on to get my impressions after 6 months of heavy use...

November 12, 2019

SQL Server snippets #SQLGeek

This post will be an ongoing, growing collection of SQL Server code snippets that I happen to find useful. There is no particular theme, order or categorization -- just a random collection of helpful items that I hope others will find useful, too.

My apologies if I eventually include anything particularly unique or complex without citing an original author -- please comment with links to original posts so I can verify and add citations accordingly.

Read on for the snippets...

May 16, 2019

Save 64% on a COOL smart deadbolt

I love to window-shop crowd-funded products and, occasionally, purchase.  So far I've had great experiences with the products I've gambled on.  For instance, I pre-ordered a full eero mesh WiFi system 14 months before its actual release and the system has been every bit as good as I'd hoped.  I threw some dollars at a Coolest rolling cooler and was one of the lucky bunch that actually received a unit right away (the blender worked, too!)

Smart Lock
Today I laid my credit card info down on a recently-released smart door lock -- a deadbolt for the front door.  Sure, smart locks aren't a "new" gadget category but this product and pre-order deal is the best combo I've seen:  a deadbolt lock supporting Bluetooth access, code-entry access, physical key access, fingerprint access, a WiFi bridge and a companion smartphone app for an early-bird price of $159 shipped ($449 MSRP).

The U-Bolt Pro Combo lock has typical smart-lock features like auto-unlock when your phone gets within Bluetooth range and it offers the ability to remotely lock/unlock with a smartphone app for Andriod and iOS.  It's with the less-typical capabilities, though, that things start to get interesting:  IFTTT integration, support for both Alexa and Google Assistant, and an exterior-accessible power port (micro-USB) to power up the lock if the primary batteries go dead and you don't have the physical key handy.  Got a big family?  Lots of close friends?  This lock lets you set up access for up to 60 users including one access code, one smartphone registration, and two fingerprints for each user.
Even More Interesting: Feature Scheduling
You can create schedules to determine when certain features are enabled.  For instance, you could allow a maid service to unlock via entry code or fingerprint only during certain hours of the day.

Using IFTTT, you can cobble together a wide range of scheduling options.  Imagine automatically allowing a trusted friend the ability to unlock via code if the door hasn't been unlocked in more than 3 days (i.e., when you go on vacation but forget to alter access settings for your friend). 

Note that, at this point, I don't have a U-Bolt to test myself so I'm only throwing out ideas with the expectation that the listed features can be trusted to work as advertised.  There is also no guarantee that any crowd-funded product will ever actually be delivered.  I tend to lean heavily towards the, "I'll believe it when I see it" camp but, in this case, the company has already produced a couple of more basic deadbolt products as well as 500+ units of this "pro" version of the smart lock.

I'm expecting my own unit to ship sometime over the next two months (!) and will update with my initial impressions when it arrives.  If this is something you're into and you decide to buy during the early-bird discount period, consider using the ATXGeek referral link below so I'll earn some credit towards whatever my next gadget will be.  Early-bird pricing is only available through May 31st.


April 21, 2018

Quick line count via Windows command line #DevGeek

Every so often I need to get a quick line count estimate across a collection of files. Line counts are helpful in broadly defining the scope of reviewing or updating existing code files.  In such cases I only need a ballpark estimate of total lines of code across multiple files.  It turns out that all we need is the Windows command prompt and a one-line command:

At first glance this solution isn't overly intuitive but it's actually quite simple.  The TYPE command parses each line in the specified file and pipes each line through the FIND command which searches for string values matching the specified string.

In this case, we extend the TYPE command's usefulness from parsing just one file to parsing collections of files by using a wildcard search for all files ending with ".log".

For the FIND command, we use the "/V" switch to invert behavior and have the command look for lines that *don't* have the specified string.  We use the "/C" switch to tell FIND to give us a count of matched (unmatched in this case) lines instead of the content of the lines.  Finally we specify any string value we can reasonably expect to *not* exist in our searched files.  I used "zzxxccvvbbnnmm" in my example.

Here's the result of the command on a directory where I placed two sample log files:

See?  Quick and simple as long as you can remember the "/V" and "/C" switches.

Counting lines of files across multiple file types
What if we need to count lines between files of differing file types?  For instance, if I'm counting lines in both ".log" files as well as ".xml" files?  Easy: just specify the additional file search as part of the TYPE portion of the command:

For your copy-and-paste convenience, here's some copy-ready text:

  TYPE c:\temp\*.log | FIND /V /C "zzxxccvvbbnnmm"


March 27, 2018

JBL Everest firmware update #SoundGeek

Owners of JBL's good-but-flawed Everest headphones have long-complained of the processing lag that prevents sound from being in synch with video when pairing with a TV or watching videos on a mobile device.  JBL previously addressed this with a firmware update (yea!) but then, without explanation, removed the update from various product support pages (boo!)

If you have "normal" (i.e., not "Elite") Everest 100, Everest 300, or Everest 700 headphones and have sound lagging behind video then you're in luck:  I have located the elusive firmware update over on JBL's Japanese site.  The site isn't in English but the firmware package itself is and includes English instructions.

Here's the link to the firmware: 
(updated link March, 2021 - thanks commenter rteng!)

 For a Google-translated-into-English version of the web page, click here.

I was able to upgrade a set of Everest 300 headphones from firmware v1.1 to v3.1 with no issues (via USB connection to a Windows 7 PC). The update fixed the audio lag issue for me but your mileage may vary.