Windows 11 Bluetooth Usability Crime Report

Windows 11 Bluetooth Usability Crime Report

The new settings interface is beautiful but untouched by any thought for how you might use it.

Like many people I have some bluetooth headphones that have an affinity for the last device they were connected to. Sometimes my laptop and sometimes my phone. I have a sneaking suspicion that I'm not unique in needing to switch the connection when needed.

On Android this involves a swipe, a long press and a short press. Not my favorite chore but not the end of the word.

With Windows 11 it's an adventure. I need to click the little up arrow to expand my collection of notification icons (yes, I could change that, but even that has got more tedious) and then double click the bluetooth icon. And then there is my device, with a pretty little icon and the last known (almost certainly wrong) battery level. Other than a random historical battery level there doesn't seem to be much to do. It turns out that you can click the tiny three dots at the far right of the device card and then finally there is a context menu that allows you to connect. The context menu has two items. This panel could have been 5% less attractive and 500% more usable with a couple of buttons. Also, would it be possible maybe to have this on the context menu for the taskbar icon?

Random googling suggests this might get better...

(Related: Chromecast won't connect to wifi - finally found the fix; Android 11 Gripes; Going Chrome)

(You might also like: Email marketing - don't shoot yourself in the foot; Crushing PNGs in .NET; Stamp out B2B spam with an evil calendar)

(All Marketing Posts)

Windows 11 Broken Notifications

Updated on Saturday, December 4, 2021

11

I'm lucky enough to have the right sort of TPM so Windows 11 installed smoothly on my laptop through Windows Update. It's got some nice fit and finish improvements and round corners and generally seems well put together. Except for anything I actually use and care about on a regular basis.

It is still impossible to get rid of notifications with one click. This has actually regressed from Windows 10 as we're back to a little x to dismiss which actually sends the notification off to the action center for when you have some spare time to dismiss it a second time. Microsoft, spend less time on focus assist and more time on this!

The taskbar wants your icons in the center. If I wanted a Mac I would have bought one. Luckily there is a setting to move them back to the left. But one thing you can't do is have small taskbar icons. There is a registry hack, but it breaks the system icons so until that's fixed the main impact of Windows 11 for me is missing out on about one row of a spreadsheet. I would like those pixels back!

Maybe the start menu is better, but I stopped using that with Windows 10 and now just pin apps or search for them so I'd never know.

(Previously: I just want to get rid of Windows 10 Notifications with one click)

Updated 2021-12-04 10:35:

A few weeks into my Windows 11 adventure and I think they handed this one off to the designers and forgot the adult supervision.

Alt-Tab you have one job and it's switching between applications. Why then is the selection now indicated by a hair thin black border? It's pretty, but I now have to squint to figure out where I'm going.

Worse still you can no longer drag and drop to the taskbar. I don't do this every day, but it's a big time saver when I need it. Now I have to go through a re-org of windows to drag things between them.

(Related: I just want to get rid of Windows 10 Notifications with one click; Going Chrome; Amazon Alexa Echo Wall Clock Review)

(You might also like: Recent Wildlife; Updates were installed...; California November 2020 Propositions)

(All Marketing Posts)

Accessing Printer Press ESC to cancel

Updated on Tuesday, October 18, 2022

ESC

Minutes spent so far this year waiting for Excel to talk to a printer: about 290.

Lifetime Excel print jobs: maybe 2?

How to fix Accessing Printer Press ESC to cancel:

  1. Press Start, search for Printer and run the Printers & scanners setting item.
  2. Find and click Microsoft Print to PDF and click Manage.
  3. Click Set as default.

The only real disadvantage is you'll need to select a different printer when you actually need to print anything (which you probably don't).

(Related: Export Google Fit Daily Steps, Weight and Distance to a Google Sheet; Full Outlook Web Access on Chromebook; Monitor page index status with Google Sheets, Apps Script and the Google Search Console API)

(You might also like: WiX Tricks for Screen Savers; Banana Slug; StackOverflow DevDays)

(All Etc Posts)

Do you want me to use Edge, Microsoft?

Updated on Saturday, May 22, 2021

Do you want me to use Edge, Microsoft?

If you're going to ask for something be direct, don't beat around the bush.

So I'm confused, Microsoft. Do you want me to use Edge? After installing updates Edge wants to 'Get started', on a nice modal with no cancel button or even any little x to close it. Must be some mistake right, not quite ready for prime time if they forgot the 'Don't get started' button. Maybe I'll try it when the kinks are worked out.

Ah, right clicking the icon and choosing close would work, right? Nope. Feels more and more like malware.

You can kill it from task manager so at least someone was paying some attention to usability.

Don't I remember some settlement with the DOJ after an antitrust judgement for forcing browsers on someone? That was a while back, must be remembering a different company.

(Related: Got It; I Love Email; I just want to get rid of Windows 10 Notifications with one click)

(You might also like: Windows 11 Broken Notifications; Golden Gate Bridge from Marshall's Beach; Glen Park Canyon)

(All Marketing Posts)

Using the Azure Monitor REST API from Google Apps Script

Updated on Saturday, February 12, 2022

Average Server Response Time in Azure Metrics

This post describes how to get metrics (in this case average response time) from an Azure App Service into a Google Sheet. I’m doing this so I can go from the sheet to a Data Studio dashboard. I already have a report in Data Studio that pulls from Ads, Analytics and other sources. I’d rather spend hours adding Azure there than be forced to have one more tab open. You might have different reasons. Read on. 

  1. Create a Google Sheet and give it a memorable name. Rename the first sheet to AvgResponseTime and put ‘Date’ in A1 and ‘Average Response Time’ in B1.
  2. Create a script (Script editor from the Tools menu) and give that a good name as well.
  3. In the script editor pick Libraries from the Resources menu. Enter 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF which is the Google OAuth library, pick the latest version and click Save.
  4. Select Project properties from the File menu and make a note of the Script ID.
  5. Log into your Azure Console and then go to https://resources.azure.com/. You are looking for a metricdefinitions node for the resource that you want to monitor. In my case it’s subscriptions / MyName Subscription / resourceGroups / providers / Microsoft.Web / sites / MySite / metricdefintions. Browse through this list to find the id of the metric you’re interested in. For me it’s AverageResponseTime. Finding this was the hardest part. Microsoft’s documentation for resourceUri is literally ‘The identifier of the resource.’ Why even bother Microsoft? Make a note of the id and remove the ‘metricDefinitions/AverageResponseTime’ from the end, because of course the ID isn’t quite right for some reason. Mine looks something like this: /subscriptions/mylongid/resourceGroups/mysomethingResourceGroup/providers/Microsoft.Web/sites/mysiteid
  6. Go back to the Azure Console and open Azure Active Directory. Select App registrations under Manage and create a New registration. Time to come up with another name. You probably want ‘Accounts in this organizational directory only’. The redirect URL is https://script.google.com/macros/d/SCRIPTID/usercallback - replace SCRIPTID with the Script ID you made a note of in step 4.
  7. Click the View API permissions button, then Add a permission and then pick Azure Service Management. I’m using Delegated permissions and the user_impersonation permission. Then click Grant admin consent for Default Directory.
  8. Go to Certificates & secrets (under manage) and create a new client secret. Make a careful note of it.
  9. Go to Authentication (under Manage), check Access tokens under Implicit grant and then click Save at the top of the page.
  10. Go to Overview and make a note of your Application (client) ID and Directory (tennant) ID.
  11. You are getting close! Go to the script editor (from step 2) and paste in the code at the bottom of this post. There are four variables to enter at the top of the script. ClientID and TennantID are from step 10. ClientSecret is from step 8. ResourceID is from step 5. Save the script.
  12. Reload the spreadsheet (back from step 1). You should get an Azure Monitor menu item. Choose Authorize from this menu. Google will ask you to authorize the script, do this for the Google account you’re using. Choose Authorize again, this time a sidebar will appear with a link. Follow the link and authorize against Azure (if you’re logged in this might just go directly to success). If you get authorization errors in the future run this step again. If that does help use Reset Settings and then try again.
  13. You should be ready to get data. Choose Fetch Data from the Azure Monitor menu. If this doesn’t work check through steps 1-12 carefully again!
  14. Last step - automate. Go back to the script editor. Choose Current project’s triggers from the Edit menu. Add a trigger (the small blue button hidden at the bottom right of the screen - not everything needs a floating action button Google!) to run fetchData daily at some reasonable time.
You should now have a daily record of average response time flowing to a Google sheet. This can easily be extended to support other metrics, and other time periods (you could get data by minute and run the script hourly for instance. See the metrics documentation for more ideas. I got this working for an App Service but it should be roughly the same flow for anything that supports metrics, you’ll just need to work on finding the right resourceUri / ID.

More Google Apps Script Projects

(All Code Posts)

BadImageFormatException for a 64-bit ASP MVC web application

Updated on Thursday, September 30, 2021

System.BadImageFormatException for a 64-bit web application in IIS Express

I converted an ASP.NET MVC web application to 64-bit in order to use dlib and it immediately died with a System.BadImageFormatException (Could not load file or assembly 'xxx' or one of its dependencies. An attempt was made to load a program with an incorrect format.)

Assuming I must have a stray wrong-bittedness something lying around I spent way to long with the assembly binding log viewer (Fuslogvw.exe) trying to figure out what I had messed up. But eventually I realized that Visual Studio was launching a 32-bit version of IIS Express to debug a 64-bit web application.

To fix this select Options from the Tools menu, expand Projects and Solutions, choose Web Projects and then check Use the 64-bit version of IIS Express for  web sites and projects. Problem solved.

(Probably shouldn't have this component in the web application - the plan longer term is to move it to an asynchronous process somewhere instead.)

(Related: Monitor page index status with Google Sheets, Apps Script and the Google Search Console API; Using the Azure Monitor REST API from Google Apps Script; Automate Google PageSpeed Insights and Core Web Vitals Logging with Apps Script)

(You might also like: Out of Office Hours; Adobe Creek; Jupiter from Casini Ranch)

(All Code Posts)

I just want to get rid of Windows 10 Notifications with one click

Updated on Tuesday, August 24, 2021

I just want to get rid of Windows 10 Notifications with one click

910 days ago I vented my frustration at Windows 10 notifications.

Well someone in Redmond must be listening. They 'fixed' it.

The problem was that dismissing a notification did not actually get rid of it. Clicking the little x in the corner just sent it to the Action Center where you could enjoy reading it and dismissing it again.

Like some kind of cargo cult Toyota, Microsoft asked the one why, and changed the little x to an arrow. Now it's more obvious that you're just shuffling the notification around the desktop. Ticket closed. But I still have to handle every fucking notification twice.

Which makes the announcement of the April 2018 Update especially ironic:

"With this update, available as a free download today, you get new experiences that help minimize distractions and make the most of every moment by saving you time. Our hope is that you’ll have more time to do what matters most to you whether that’s to create, play, work, or simply do what you love."

I'm guessing they're all on Macs?

(Related: Windows 11 Broken Notifications; Got It; 1,000th Post!)

(You might also like: Average Beach; Fixing dropped wireless connection for Linksys E4200; Sunset #10)

(All Marketing Posts)

The Trust Project, Fake News and a Partial Facebook Uninstall

Updated on Saturday, August 14, 2021

No Facebook app to be found here

The Trust Project is a well meaning but doomed attempt to deal with fake news.

Facebook, Google, Bing and Twitter are all on board because it's important to be seen to be doing something about the problem. Sarah Perez at TechCrunch writes:

"Here’s how this will work in practice: starting today on Facebook, an icon will appear next to articles in the News Feed. When you click on this icon, you can read information the publisher has shared related to their organization’s “ethics and other standards, the journalists’ backgrounds, and how they do their work,” according to an announcement from The Trust Project."

Please take a minute to scroll through the Trust Protocol Phase I MVP. Yes, this is a minimal viable product where your most recent Diversity Staffing Report is required. I don't think they understand what an MVP is. Which would be fine if they understood how to fix the problem. They don't.

Back in January I wrote this about fake news on Facebook:

"The horrible danger is that if you don't fact check every stupid quote on image meme the power of repetition lodges them somewhere in your subconscious where they become that thing that you read somewhere. Which is OK if you only read quality news but deadly if you want to catch up on old friends quickly."

And back in 2010 on cable news and the Fairness Doctrine:

"24-hour news stations are especially bad because most days there just isn’t that much news. This leaves a choice between repeating the news that exists which is boring, or making stuff up which is a lot more fun. Unfortunately It’s also corrosive."

Yes, it would be nice to have a set of standards around more easily vetting the provenance of "news" that you find on the internet. But the problem is with people taking bullshit at face value (myself sometimes included). When you scroll by something that meets the loose standards of your confirmation bias the damage is done. You're not clicking any Trust Project icon and you're sure as fuck not upgrading Acrobat just to read the Breitbart Diversity Staffing Report.

The Trust Project isn't the answer. Facebook just pulled their disputed flag. The Fairness Doctrine isn't coming back. Is there a technology based fix that might work?

"That’s not going to happen, argues Data & Society founder and Microsoft researcher danah boyd. Google, Facebook, Twitter—none of these companies is sitting on a silver-bullet solution. As boyd wrote for us earlier this year, we have more than a technology problem: “[W]e have a cultural problem, one that is shaped by disconnects in values, relationships, and social fabric."

From The Fake News Culprit No One Wants to Identify: You on Backchannel recently. I see. It's up to me. I have to fix it.

I uninstalled Facebook and Twitter from my phone just over a week ago. I'm not abandoning social media entirely (although I toy with this regularly). Just pulling back a bit.

For the first few days I'd regularly find my finger headed to launch Facebook. Every time I had a minute to kill. Facebook has no end (usually) so it works even when my RSS feed is empty. I stocked Feedly up with more wholesome content (Trust Project approved no doubt). By the end of the first week I was sometimes even leaving my phone in my pocket.

Now I catch up on Facebook on my laptop every day or two. It's a much better experience - when you check 200 times a day the feed algorithm gets increasingly desperate to please you. It panics and serves up lame memes from someone who you think must have been a coworker at some point but don't really remember. I get through a few updates from friends that I'm actually interested in and bail before hitting the questionable stuff.

It's up to you too.

(Related: I didn't think I'd ever fall for fake news on Facebook; Doing news right with Feedly and Google News; 1,000th Post!)

(You might also like: Convergent Evolution in Retail; Staying Chrome?; Treasure Island Perimeter)

(All Politics Posts)

Why Microsoft is Likely Doomed Based on one Email Folder

Updated on Thursday, August 5, 2021

Close up of the useless Junk folder in Microsoft Outlook

When you get a piece of spam in Outlook you move it to Junk or block the sender. And then, even if that junk mail is marked as read, the Junk folder has a BOLD MESSAGE COUNT. It's the only folder that does this. I cannot do any other work while I have a bold message count and so I have to switch to the Junk folder and delete the message to get rid of it.

Regular email: read, file, done.

Junk email: recognize as spam, click block sender, confirm that I really want to block the sender, switch to Junk folder, mark as read, delete.

Something is really wrong with this workflow. It's a lens through which you can view the ultimate demise of the company. Sure, Office isn't going away soon and Azure is growing like crazy and SQL Server runs on Linux. But somewhere in Redmond 5,000 people designed a Junk email folder that is the MOST IMPORTANT folder in Outlook. The rest were presumably too busy making Windows Update worse to stop this.

My Google experience is that I really don't get much spam. The spam that I do get is hidden from me unless I actually need to rifle through it for some reason. On the occasion I actually get legitimate junk I just flag it as such and never have to touch it or it's ilk again.

(Related: Catfood Software Support; I just want to get rid of Windows 10 Notifications with one click; Export Google Fit Daily Steps, Weight and Distance to a Google Sheet)

(You might also like: El Capitan; Gray Whales at Waddell Beach; Folder Insights)

(All Marketing Posts)

Reading and Writing Office 365 Excel from a Console app using the Microsoft.Graph C# Client API

Updated on Sunday, September 18, 2022

Read and Write Excel from Microsoft Graph

I needed a console app that reads some inputs from an online Excel workbook, does some processing and then writes back the results to a different worksheet. Because I enjoy pain I decided to use the thinly documented new Microsoft.Graph client library. The sample code below assumes that you have a work or education Office 365 subscription.

Paste the code into a new console project and then follow the instructions at the top to add the necessary NuGet packages. You'll also need to register an application at https://portal.azure.com/. You want a Native application and you'll need the Application ID and the redirect URL (just make up some non-routable URL for this). Under Required Permissions for the app you should add read and write files delegated permissions for the Microsoft Graph API.

Hope this saves you a few hours. Comment below if you need a more detailed explanation for any of the above.

(Related: Using the Azure Monitor REST API from Google Apps Script; Monitor page index status with Google Sheets, Apps Script and the Google Search Console API; Automate Google PageSpeed Insights and Core Web Vitals Logging with Apps Script)

(You might also like: Immature Gmail Exploit; Drones and Gun Control; Open Democracy)

(All Code Posts)