A short meander through some of the more obscure miscellany within Unicode. Languages hang around far longer than there are native speakers, and symbols get reused and repurposed (🍆). Here are some of the delightfully old-fashioned symbols hidden in your thoroughly modern smartphone. Tapes Long before solid-state drives, we used to record data on long thin strips of magnetic tape. 🖭 📼 I'm sure…
Continue reading →
Update for 2019! Twitter have changed how they compress images. Some of the techniques in this blog post may be out of date. Let's talk image compression! Services like Twitter will often apply aggressive levels of compression in order to reduce their storage space and decrease download times. This can have negative consequences for usability and image quality. Here's an example - this detail…
Continue reading →
I went to an event a few weeks ago where some leading BlockChain organisations were showing off the power of Distributed Ledgers and how they will transform society. Not one of them mentioned users. There was talk of investors, stakeholders, corporations, smart-contract-backed entities. But no users. No real people who have to interact with their services. That's par for the course at this…
Continue reading →
Back when I used to help people design mobile phone apps, I would talk about the platonic ideal of an app. It's quite simple and effective. You press the button in the middle of your screen - and it makes everything better! You push that button and a taxi arrives, or a pizza is delivered, or your photos are backed up, or you fall in love, or you learn a language. Life is rarely that simple…
Continue reading →
As ever, notes to myself. This is a method to take a .wav and .cue and transform it into individual files. In this case, .opus. Transform to .flac FLAC is a good intermediary file format, especially for surround sound files. avconv -i file.wav out.flac Transform to .opus An optional step if you want smaller files. Maximum quality for 6 channel audio. opusenc --bitrate 4096 out.flac…
Continue reading →
I'm lucky enough to get invited to speak at a variety of conferences around the world. After accepting a speaking invitation, and checking I'm not on an all-male line-up, I usually make one of the following requests to the organisers. Thanks for inviting me. Can you let me know if the venue is wheelchair accessible? So excited to be there. What are the crèche facilities going to be? Looking …
Continue reading →
For my contact page, I wanted a generic calendar icon to let people view my diary. Calendar icons are almost always a skeuomorph of a paper calendar, but I wondered if I could make it slightly more useful by creating a dynamic icon. Here it is, an SVG calendar which always display's today's date: The background image is derived from the Twitter TweMoji Calendar icon - CC-BY. Text support in …
Continue reading →
(This isn't really a security issue, although I've disclosed it to the Twitter team.) "Fuzzing" is a computer science term which means "sending weird data into a program and seeing what happens." It's a useful way to see how your code can break in new and unexpected ways. It's particularly good at showing what a website's search engine does when it is confused. For example, here's a fairly…
Continue reading →
Spotted in London, yesterday. A large, Microsoft Windows-powered advertising hoarding has been hijacked. It's not uncommon to see broken-down Windows displays - I run https://windowsisbroken.tumblr.com/ - which is dedicated to pointing and laughing at such mistakes. But this is the first time I've seen a display repurposed for profit! It appears to be running NiceHash Miner Legacy. A…
Continue reading →
I'm currently helping to edit the HTML5 specification. As part of our preparations for HTML5.3 I've started going through the provided examples and improving them. This blog post explains the what, why, and when of the process. You can follow along on GitHub. (As part of my job, I'm lucky enough to be on the W3C's Advisory Committee. This is a personal blog post. If you think my ramblings…
Continue reading →
I've been thinking about words. The Chinese word for "train" - the mode of transport - is 火车. Which literally translates as "fire chariot". Long gone are the days when trains were pulled by a fire-breathing engine at the front, and yet this linguistic skeuomorph hangs around. English is not immune from this. The television still asks us to "tune in" even though no-one manually tunes in a rad…
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…
Continue reading →