It used to be the case that this was safely subscribed in my podcast app (I use Podkicker Pro) and so each new episode would download to my feed when released.
The BBC has decided to fix the problem of me getting the program I want to listen to automatically and conveniently. If I want my comedy I have to install My Sounds. When Spotify tried this with Science Vs I just stopped listening. I have plenty of other science podcasts but The Now Show and the News Quiz are irreplaceable. So maybe I could cope with one walled garden.
My Sounds says it will notify you when new episodes are available. It does not.
My Sounds has a My Sounds tab which lists Latest programs. I'm writing this on April 2 and the most recent episode of Friday Night Comedy is from March 25.
Only if I go into Subscribed, and then the program page for Friday Night Comedy does it finally admit that there is an episode from April 1.
So I'm forced to install an app that not only fails to notify me of new episodes of subscribed programs but actively hides them in the basement behind a beware of the leopard sign. BBC, maybe get the app working before forcing me into it? I would rather pay to subscribe to an RSS feed than deal with My Sounds.
I'd take the time to leave a one star review, but in its infinite wisdom Google doesn't allow paying customers to leave app reviews.
Updated 2022-05-06 11:32:
Having been forced into the excreable BBC My Sounds at least it supports downloading an episode to listen to on the plane right?
Updated 2022-05-06 11:33:
Does it fuck. BBC, please fix this and then try asking nicely?
I love almost everything about Todoist. It's rich enough to scratch all my productivity itches while also being basic enough that I don't spend time gardening my tasks. Also, their Android app is just gorgeous, the exact opposite of Google's ascetic descent into identical lists of black in Material Design.
The one problem is the Alexa integration. You can add tasks to your shopping list or your to do list. The shopping list works great for me. I check it once a week when I do my grocery shopping and everyone knows to just tell Alexa when they need something. The to-do list is a disaster. These go to a separate to-do list project without a due date and I will never ever find them there. Anything else I add will end up in the Inbox with a due date of today so I'm forced to classify and if necessary reschedule it. Which is exactly what I want.
When I say 'Alexa, add x to my to-do list' I want that task to be visible. This integration design flaw could lead to at least one child growing up in an unfamiliar part of town without parents, or worse.
I emailed Todoist and they politely declined to change the way the integration works. After a brief period of steaming I've rolled up my sleeves and fixed it with their API. Which doesn't use OAuth so now I love them even more.
The script is below. Create a new Apps Script project in Google Drive (New and then choose More to find this) and copy in the code. You can get the API token from the bottom of the Integrations section in Todoist settings. Then just click the clock in the Apps Script project and schedule checkForAlexaTasksWithNoDate() to run as often as you need. The script will check the Alexa To-do List project and if anything is in there without a due date it will set it to today to force you to deal with it.
Google just released URL inspection as part of the Search Console API. I check for issues periodically in Search Console but it would be great to just get an email when an issue crops up. The Apps Script project below does just that by monitoring URLs from your sitemap for changes and sending an email whenever anything is detected. The Search Console API has a limit of 2,000 calls per day and Apps Script also imposes a time limit on scripts. The approach I take below assigns a random day of the week to each URL to limit the number checked on each run. Depending on the size of your site you may want to remove this check (or go the other way if you have a large number of URLs to monitor). Follow the steps below to get your own monitoring spreadsheet up and running.
Create a new spreadsheet in Google Drive and call it anything you want. Rename an empty sheet to 'gsc', this sheet will store the index data. You don't need to make any other changes to this sheet.
Choose Apps Script from the Extensions menu. This will open up the script editor for your spreadsheet. I find that sometimes the editor opens with the wrong account if you're signed into more than one. If that applies to you, check quickly to make sure the right account is selected. With Code.gs selected copy and paste the script below replacing the default function:
There are a few configuration variables to enter at the top. AlertEmail is the email address to notify when index status changes are detected. SitemapUrl is the full URL of your sitemap. The current implementation does not support sitemap index files, this needs to be a regular sitemap containing URLs. SearchConsoleProperty should be the URL of the site to monitor, or sc-domain: followed by the domain for domain properties (for this site sc-domain:ithoughthecamewithyou.com).
Click Project Settings (the cog in the left hand menu of the script editor) and copy the Script ID. Make a note of this for later.
Make sure the script is saved and close the script editor window. Reload the spreadsheet. Once the reload completes you should have a Search Console menu at the top of the spreadsheet. Choose Update Data from the Search Console menu. This will run for a few minutes and then populate the 'gsc' sheet with your URL data. See UrlInspectionResult in the API documentation for more information about the meaning of each field. You should also get a lengthy email with a notification for each URL that was inspected. This will continue for the first week and then you'll only get updates for interesting status changes.
Now the project is working, open the script editor again (Apps Script from the Extensions menu) and open Triggers (the clock icon in the left hand menu). Click Add Trigger at the very bottom right of the window. Select runUpdate as the function to run. Change event source to time-driven, and then select day timer and an hour to run the script. Lastly click Save. Your Google Search Console monitor will now run every day, and if the index status of a page changes you'll get an email about it within a week. The spreadsheet will also come in handy for other analysis and reporting.
You might need to tweak the script if you start hitting limits. The URL inspection API currently has a 2,000 call / day quota. Apps Script will only run for around 7 mins on a free account and 20 mins if you have Google Workspace. If either of these limits apply you could modify the 'checkDay' logic to use day of the month (or year, or ...) to reduce the number of URLs inspected on each run. If you need to do this remember to update the Check Day column on the 'gsc' sheet as well.
The script assumes that the URLs you want to monitor are in your sitemap. If this is not the case you can add URLs to the sheet directly. As long as they are part of the configured property you will still get results. If you use this method you might want to comment out the updatePagesFromSitemap() call in runUpdate() to save time.
If anything else goes wrong please leave a comment below and I'll do my best to help you.
Updated 2022-02-08 17:40:
After a couple of days I have a full dump of my sitemap from the page index status API. I wrote this script for the alerting possibilities but couldn't resist some analytics once the dataset was complete.
The chart above shows sessions vs days since the last Google Crawl. Pretty stark - Google keeps a close eye on the pages it sends traffic to and not so much on the others.
I set lastmod honestly and there is good news here. I could only find two cases where Google had not crawled the page since the last modified date. So when the sitemap says a page has changed the odds are good that it will get another crack at the index. The two exceptions are unusual posts that are updated hourly and weekly respectively and both have been crawled recently.
The breakdown of index status matches Google Search Console pretty well but I have a handful of pages that are 'Indexed, not submitted in sitemap', even though they are in the sitemap and no such status is shown on Search Console. I don't know if this is a glitch in the index status API or something to do with how the pages were discovered. Some light searching suggests that this message is usually what you would expect it to be.
Lastly, updating the sheet for my site is more bound by script execution time than the API limits. I changed it to run every hour and instead of partitioning by day of week I used a random hour of the day which means I check every URL at least once every 24 hours.
Updated 2022-04-24 10:50:
I just updated the code and post above. I've had occasional issues where updating the sheet failed which caused the next run to go back to the beginning with no saved index status. To reduce the chance of this happening I've added some retry logic and also improved the speed of the sheet load and save functions. I also had a comment on the code that suggested an easier way to handle OAuth and have incorporated this in the new version.
To me the very best part of the web is RSS feeds so I can quickly skim through hundreds of sites with a consistent interface and no ads. I used to do this with Google Reader but since that was killed I've found Feedly to be an awesome tool and I happily pay for the Pro version. The Android app is great. The web version sometimes gets lost in the list but is fast to use with keyboard shortcuts for cruising through your list. I keep Feedly stocked with news sites, hobbies, work related niche publications and everything I know I want to keep an eye on. The only gap is those unknown unknowns.
Google News is my current fix for finding the stories and context that I don't get through RSS.
As a learning system Google News pretty quickly figures out what you're interested in. It's not perfect so you have to spend some time training it. Once in a while it will decide you need every word written about Ina Garten, but you can easily tell it that it's wrong. A more subtle tip is to often click sources that you violently disagree with. Google News has some tendency to surface different angles but it definitely helps to signal that you are open to uncomfortable takes on a story. This is a powerful filter bubble burster.
Having escaped most social media (I still have LinkedIn which is the cockroach of platforms) I really hate the feed based approach that Google takes with News. I understand it but I hate it. Probably the worst usability crime is that it will often refresh without being asked. I'll be halfway down the list, spot an interesting article, get distracted, and then when I switch back I see that tempting story for a fraction of a second before the whole feed reloads. Often that story is then nowhere to be found. There is a feature to save for later, but I try to avoid this because future me isn't likely to have time either and it adds the burden of yet another to-do list to keep track of.
Don't make me read it twice
Related to the feed is the tendency to show me the same story again, and again, and again. Other than ignoring a topic or publication there is no mechanism to just dismiss a story. I know that the algorithm has worked really really hard to find it but I don't need to see it every day for a week or more. It's OK, in fact desirable, to be done with the news. As with the feed I know that it's someone's job at Google to work on engagement and my time is an externality to their optimization algorithm. It's a big irritation all the same.
Lastly for me I also get a lot of context from podcasts. I use Podkicker Pro on Android (also worth paying for). We live in peak podcast times and I don't have enough time to listen to everything that I want to.
I migrated from Nest to Google Home today to save a few bucks and while eventually inevitable it was a really dumb move.
The first thing is that it doesn't work with your Google Workspace / G Suite account because of course it doesn't. So you need an unpaid Google account to move to. Luckily I already have one from that time that G Suite didn't support Google Fi. Interestingly while Google Home won't work with your paid account it has no problem reaching over to grab credit card information from it.
The next thing is goodbye Works with Nest, hello Works with Hey Google. So there goes my IFTTT integration. Because I can't use my main Google account it's kind of useless to me that this might work with Google Assistant. There is still Alexa integration though so I can play my Nest stream on the Echo Show once a year or so as a connected home party trick.
Having not read the changed terms of service I downloaded the Google Home app which a few minutes in I've take to calling Google Nope.
Nest Protect is not supported! This is my favorite smart home device just because when the battery runs out it can tell you which one to change. It's worth almost any amount of money to not spend several hours figuring out where in the house the omnidirectional smoke detector chirp is coming from. But for some reason Google Home doesn't integrate with Google Nest Protect so you need to keep the Nest app as well. Understandable, they only have several tens of thousands of engineers.
So they nailed the camera experience at least, right? Nope. In Nest there are about a hundred settings to play with. In Google Home you can change the name of the camera. In Nest you can scroll through all of your recorded history. In Google Home, despite specifically paying for the plan with 10 days of history you can't. It has a pre-Alpha feel to it. Good for a 'hey, we got the skeleton of an app thrown together' kind of internal demo but it feels like they probably should have added the things you've paid for before shipping it to anyone, let alone bribing them to go through a feature shredding 'migration' process.
You have to make allowances for the fact that many people are working from home (where maybe it's harder to test code and you certainly can't do hallway usability testing). Things also improved somewhat with the October patch. But Android 11 was a Windows ME level disaster. Google says that they dropped the desserts to make Android 'more accessible to a global audience' but I think it's probably because they know that new updates are no longer sweet.
Multi-tasking is completely broken. In pandemic mode I'm on video calls all day, and dodging the 2-3 video calls that are usually going on elsewhere in my house. Being able to have Teams and notes running at the same time is pretty important right now and with 11 it's not possible.
Other than conference calls and Kindle the other main use I have for my phone is podcasts. Android 11 improved the media controls by moving them to the quick settings area of the notification shade, providing easy switching between playback devices and allowing you to swipe through recent playback apps. All good, except that none of it works. The controls are there but do nothing so I have to run the app to pause. Also, there is a weird ghost of a previous media playback that shows up and then disappears when pulling down the notification shade. And as for dismissing previous sessions that seems to require a reboot.
Multi-tasking and media were fixed in the most recent patch, but there is also some new notification system to separate out conversations. In practice this seems to mean I get multiple groups of Gmail and Teams notifications instead of a single cluster per app. This isn't what I want, gives me more work to do and so far I haven't found a way to turn it off. Notifications have steadily improved over the last few major Android releases so it's upsetting to see them becoming worse.
This is all on a Pixel 4XL which you would assume would get some level of testing love. It used to be that the main advantage of a Pixel was getting new versions of Android quickly. With 11 I'm for the first time wishing I was waiting a few months while the kinks were worked out.
The screen shot above is from Google Fit. Which icon is active? I can't tell any more. Is it the blue one or the underlined one which is a much stronger cue?
Of course none of the icons are underlined. This is a bottom navigation bar on top of the Android navigation bar on Android 10 with gesture navigation enabled. My brain knows this but my finger still tries to click on Home. Journal just looks so much more active I can't help it. This friction is also in Google Photos and Google Maps and presumably Google everything before too long.
Maybe the Google app developers don't have access to recent Pixels, or maybe the Material Design team all have iPhones?
I don't know about you, but when it comes to Google Search Console I spend about 0.01% of the time adding sites and 99.99% analyzing existing ones. And yet when signing into Search Console with many verified sites the interface is ALL about adding a new one. Maybe 10% of the UX would be reasonable but it looks for all the world like I have nothing added.
To get to my sites I need to click the hamburger. Come on Google, being mobile first doesn't have to mean being desktop hostile.
Clicking the hamburger isn't even enough. This just brings up a practically blank sidebar. I then need to expand the 'Search property' drop down. Finally I get a needlessly scrolling list of my sites.
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.
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.
Create a script (Script editor from the Tools menu) and give that a good name as well.
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.
Select Project properties from the File menu and make a note of the Script ID.
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
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.
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.
Go to Certificates & secrets (under manage) and create a new client secret. Make a careful note of it.
Go to Authentication (under Manage), check Access tokens under Implicit grant and then click Save at the top of the page.
Go to Overview and make a note of your Application (client) ID and Directory (tennant) ID.
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.
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.
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!
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.
95% of my incoming calls are now spam. Most of them are some strange pre-recorded Chinese voice with music playing in the background but I occasionally get a free hotel stay as well.
So far Google has rolled out Call Screen. This means I can waste my time watching Google Assistant talk to the spammer. It's way faster not to bother, hang up all calls and delete the voicemails later.
It seems like instead of Call Screen there could be a better way to deal with this.
Firstly, send any call not from someone in my contacts directly to voice mail. This would actually solve a lot of the problem.
Next, for extra credit, run spam detection on the voice mail before sending it to me. If it's two seconds long and blank then just bin it. If it's Chinese with music bin it. Only if it passes the smell test should it appear in my actual voice mail. Google is very good at this for Gmail.