Using canvas to shrink images for Google Cloud Vision


The HTML5 Logo.

I've started using Google Cloud Vision for running text detection on OpenBenches images. There's just one problem - Google limits the size of the files that it will accept to 4MB. Why? Who knows! Obviously, it's easy to shrink an image server-side, but how do we do it in the browser? First, let's take a bog-standard file chooser and add a <canvas> element. <input id="userFile" type="file" accept="image/jpeg" /> <canvas id="shrink"></canvas> Next, when the user chooses a file, draw it on…

Continue reading →

Bug with Google Pay and Amex


It is impossible to contact large companies to report a bug in their software. So I'm reduced to writing snarky blog posts about it in the vague hope that a Social Media Manager will see the issue and raise it with the appropriate team. Welcome to 2017! Google Pay now supports American Express cards in the UK. Hurrah! But if you try to ring Amex from within the app - a problem occurs. Can you spot what it is? The country code should be +44. For some reason, it's missing the +. It…

Continue reading →

Falsehoods Programmers Believe About Families


I've written before about Solipsist design - those services which have been designed to work only for a very specific type of family. I was taking a look at Google's "Family" proposition - which allows users to share their purchases with other family members. What I found didn't impress me. Terence Eden is on Mastodon@edentFile under "Falsehoods Programmers Believe About Families." pic.x.com/3vgiq0ursf❤️ 574💬 38🔁 008:01 - Mon 27 March 2017 Let's take a look at some of the more baroque requir…

Continue reading →

Google's AMP is a gilded cage


AMP is Google's attempt to re-fight the transcoding wars of the early 2000s. It is actively dangerous to the web ecosystem, helps disseminate propaganda, and is disliked by many users. If, like me, you made the mistake of trying out AMP on your website - you're in a tricky position if you try to remove it. Google doesn't like anything leaving its clutches. After a few weeks of AMP, I decided that it wasn't suitable for me. So I uninstalled the WordPress plugin. That's when the problems…

Continue reading →

Does Google's Hiring Process Put Off Talented Applicants?


The Google Logo.

I was contacted by a Google recruiter the other day - and I turned them down without a second thought. Part of the reason is that I'm happy in my current role (hi boss!) - and another part is that last year Google deleted me. But perhaps the biggest reason is Google's awful reputation when it comes to hiring. Google's attitude seems to be similar to that of a top-flight university. It knows it only wants the best-of-breed and is acutely aware that there are thousands of qualified people…

Continue reading →

Liberate Your YouTube Videos


If you've been following this blog, you'll know that Google unjustly shut down my YouTube channel. They've now reinstated it - but I can no longer trust them as custodians of my data. So, here's a quick tutorial on how to download all your videos - and metadata - from YouTube. The Official Way Google offers a "takeout" service which will allow you to package up all your YouTube videos for export. It creates a multi-gigabyte archive - which isn't particularly suitable for hosting elsewhere. …

Continue reading →

The Day Google Deleted Me


(Trigger Warning - violent swearing and criticism of your employer / focus of your fanboi-ism.) Google knows me. I've been using Google since long before they were fashionable. I have a Gmail account (in my name), YouTube (also in my name), an Android developer account (name and bank details), Play account (name, credit card, and PayPal), and I've successfully reported security bugs to them. Google, I would suggest, has a pretty good idea of who I am. Which is why I was somewhat confused to …

Continue reading →

Google's Secret Screenshot API


I've been looking for a way to programmatically take screenshots of websites. Most of the solutions I've found won't work on headless servers, require complex libraries to be installed, or cost money. So, what do we do when faced with a knotty programming problem? Hack it! Google has a "Pagespeed" service, it allows any webmaster to get a comprehensive report on how Google assess their page. It also includes a screenshot of how Google sees the webpage. Here's how my blog looks according to …

Continue reading →

Get your Google Location History the hard way… Again!


Last year, I wrote about how to extract Location History from Google. Once again, Google have changed their URLs to make it even harder to get one's current location out of their data-greedy hands. It used to be the case that Latitude gave that information - but they killed it. Then they promised it in Google+ - but never delivered. Now they offer you a data-dump which they will email to you. Hardly convenient if you want a single day! sigh Recently Google released Timeline - an…

Continue reading →

Sharing on Android is Broken


As I get older, I begin to lose neuroplaciticy. I get angry and confused when I don't understand things. I get frustrated when I have to change my behaviour. It happens to all of us, to some extent, and it's one of the major reasons you should design your apps in a clear and consistent manner. I've been using Android - Google's mobile OS - it since before it was launched. I now love and loath it in equal measure. Consider the simple act of sharing a piece of content. A fairly common…

Continue reading →

128 WiFi devices ought to be enough for anyone...


Google have just announced their brand new WiFi router - OnHub. It promises to make WiFi connectivity a breeze, increase speeds, reduce buffering, and clean your carpets. Nestled at the bottom of the annoucement is this curious specification. That seems... low. Doesn't it? I did a quick tally of all the devices my wife and I have which use WiFi. My phone Wife's phone My ebook Wife's ebook My laptop Wife's laptop My work laptop PS4 Xbox 360 Wii U …

Continue reading →