Some background reading. Skip if you're familiar with fonts. A font file contains a list of characters (usually letters, numbers, and punctuation) and glyphs (the drawn representation of that character). It is, of course, a lot more complicated than that. Each character has a codepoint which is represented in hexadecimal. For example, U+0057 is the Latin letter Capital W, U+20AC is the Euro Symbol €, and U+1F600 is the Emoji Smiling Face 😀. These codepoints are assigned by the Unicode Cons…
Continue reading →
/ləʊk(ə)lʌɪˈzeɪʃ(ə)n/ The ability to adjust a user-interface to the user's local language or dialect Because I live in the UK, I speak en_GB (English, Great Britain) rather than en_US (English, Simplified United States). Mostly, all dialects of English are mutually intelligible. Sure, the Brits love the letter U and the Americans stick a Z in every possible word. But we get along reasonably well. Except in Gmail. Here's my en_GB localised Gmail interface. Note how there is a folder calle…
Continue reading →
My colleague was understandably ticked off with me. A week previously, they'd asked me to get something fairly urgent done. I hadn't done it - and all hell was breaking loose. I wasn't being truculent or disobedient. I simply hadn't seen their message. And it was all Google's fault. At work, we use Google's G-Suite. It's a brilliant set of email and document tools. It also contains two incompatible messaging apps. When I started using it - the chat product was "Hangouts". At some point,…
Continue reading →
tl;dr Google forgot to renew a domain used in their documentation. It was mildly embarrassing for them. And possibly a minor security concern for some new G-Suite domain administrators Background Choosing a good example domain, to use in documentation, is hard. You want something which is obviously an example, so that users understand they have to substitute it for their own details. But it also needs to be a validly formatted domain, and shouldn't be used for anything important, and -…
Continue reading →
Six years ago, I developed Android apps (APKs) which I emailed to myself. When I try to download them from Gmail today, I get this rather annoying error. Anti-virus warning – 1 attachment contains a virus or blocked file. Downloading this attachment is disabled. Google, in its efforts to protect me from myself, have retroactively blocked certain filetypes from being downloaded. If you try to forward the mail somewhere else, you get this error. For security reasons, Gmail does not allow y…
Continue reading →
Hello! It looks like you're writing a blog post - would you like help with that? chuckles Me and my colleagues at Microsoft have decided that the world needs more Clippy - the adorable animated paperclip. To help with that, we're bringing a new feature to Edge 6.0. Web Developers can now use <clippy> to call up an animated virtual assistant. I've spoken to several people in Microsoft, and we all agree it is a good idea. We looked through a number of great software projects (mostly from…
Continue reading →
Another day, another Gmail bug which won't get fixed. The original Android phone - HTC Dream - had 192MB of RAM. The latest Android phones tend to have 6GB. A 32 times increase in a decade. Laptops have also leapt forwards in speed and memory. Sadly, no one on the Gmail team has noticed. It's 2019, and Gmail app users are still seeing the dreaded "[Message Clipped] View entire message" error. It's just as bad on the web version of Gmail - even on Desktop Chrome. Google don't even do…
Continue reading →
I don't like AMP. I think that Google's Accelerated Mobile Pages are a bad idea, poorly executed, and almost-certainly anti-competitive. So, I decided to join the AC (Advisory Committee) for AMP. I don't want them surrounded with sycophants and yes-men. A few weeks ago, a bunch of the AC met in London for our first physical meeting after several exploratory video calls. These are my impressions and highlights of the meeting. You should also read the official minutes to get a more rounded…
Continue reading →
I was in need of a new laptop, so I bought a cheap ChromeBook - mostly because Amazon could deliver it the same day. Sadly, the trackpad was broken. Before I sent it back, I thought I'd try using a mouse with it. That's when I discovered that accessibility is very much a second thought for all the young and healthy people Google employ. I have RSI and use a vertical mouse. After decades of regular left-clicking, my index finger is worn out. So I use a thumb button to click. Changing the…
Continue reading →
Google is a company with nearly unlimited resources. It often chooses to use its power for the greater good of the Internet. Creating amazing projects like digitizing every printed book, bringing Internet access via high-altitude balloons, and offering high-quality language translation. And sometimes it just gets bored and abandons them. Google Noto is such a project. It is an attempt to create beautiful fonts for every single human language. It promises No ToFu - no more blank boxes where a…
Continue reading →
Blogging - because Google don't offer a bug bounty for spam reports... Back in 2007, Google introduced "My Maps": Easily create custom maps with the places that matter to you. Allow friends to see and edit your maps, or publish them to the whole world. Like most Google products, it was effectively abandoned after launch - receiving a superficial update in 2014. Now it is a haven for spammers and fraudsters. Even Google's mighty AI is unable to detect this complex spam... How big a…
Continue reading →
I've been playing with Google's Cloud Vision API. It is OCR (Optical Character Recognition) - but in THE CLOUD and uses MACHINE LEARNING! When it works, it is indistinguishable from magic. When it fails, it reveals a very limited understanding of human text. Let's take a look at this quick example - a piece of evidence from Leveson Inquiry Considering that the document is a digital scan of a fax of a print out, it low resolution, blurry, and skewed - it is nothing short of incredible that …
Continue reading →