tommorris.org

Discussing software, the web, politics, sexuality and the unending supply of human stupidity.


I just learned about went, a Python library for webmentions that is built on mf2py.

Meta-point: it would be interesting to see if we could find a way to express “library X depends on library Y” using microformats and webmentions, so that when someone launches a new library that is based on a library you have created, you can be notified about it.



Question on signup form for a new web service: “Why do you want to use [product name]?”

My honest answer: “Pissing around, mostly.”

This is the usual answer for most things. Until you try them, you don’t know what you’ll be able to use them for.




On the dangers of a blockchain monoculture is an interesting takedown of Bitcoin’s flaws. It’s a standard refrain in the VC investments around Bitcoin and blockchains that while Bitcoin may not hold much value, blockchains are very interesting.

I see even less value in blockchains than I do in Bitcoin: an enormous, slow, lumbering, public database that you can’t remove private information from. Great. Just what privacy advocates have been fighting for.



I’m tempted to write a simple guide to current software development practices that explains them for developers. Specifically things like Scrum, Agile, TDD, BDD, DDD (and all the other *DD) and so on.

It’d take the form of answering the following questions.

  1. What is it? (e.g. TDD: “writing tests before you write code”)
  2. How do I do it? (e.g. TDD: “use a unit test library like JUnit or PyTest and enforce iron discipline on yourself”)
  3. Does it work? (Usual answer: we don’t know because we never fucking test any of our methodologies, we just adopt them on the basis of religious preference and/or hearsay)
  4. Who is making money off this trend? (Usual answer: consultants)

And, yes, the complete lack of useful answers to question 3 does tend to scupper this idea from the start.



What Does My Site Cost? shows you how much it costs to download your webpage.

And, yes, the extravagant cost of mobile bandwidth in various developing countries is a negative externality of shitty, but fashionable, web programming practices. Your pointlessly bloated JavaScript framework costs money for poor people to download.


Possible new emojis in Unicode 9.0.

With the addition of numerous sport-related emojis (wrestlers, water polo, handball, fencing, modern pentathlon), plus the first, second and third medal symbols, and the existing flag symbols, people will finally be able to report the results of the Olympics purely using emoji.

Probably won’t be ready for the Olympics in Rio de Janeiro in the summer, but maybe good to go for the 2020 Olympics in Tokyo.







This press release from the Royal College of Arts is an amazing and spectacular collection of bad writing.

This is an unprecedented opportunity to extend and deepen our subject landscape allowing a more leading-edge approach grounded in experience and expertise, with new initiatives underpinned by our reputation for innovation and skill. Our challenge is to combine scale with opportunity and agility, looking to lead change from the front. Our motivation is to help build a better world; our new structure is designed to support that ambition.

A perfect illustration of Orwell’s indictment: “phrases​ tacked together like the sections of a prefabricated hen-house”.

Do read the whole thing. There’s so much audaciously obscurantist art-speak that one could almost interpret it as a piece of performance art in its own right.


Lessons from trying to help with Android/iOS transfer

This weekend, I have been helping an Android user I know switch over to iOS.

What a fucking mess. The tech industry really ought to feel collective shame for the horror movie that is trying to switch from one platform to another.

Let’s start with the official route for moving from Android to iOS: Apple’s Move to iOS app.

  1. You can only run the app at the point of initial setup. If you managed to miss the option, enjoy wiping your iPhone and restarting.
  2. The fucking thing crashes repeatedly and there’s no way to resume the transfer. It starts from scratch. This is an infuriating process.
  3. If you try and Google anything related to this app, you get anything-but-helpful answers from the fandroid community. Instead of a detailed description of the technical issues with the app and how to get around them, you get helpful nuggets like:

Why would i move to ios, most android phones today out perform iphones. Quad core vs dual core, 4k vs 720p, freedom vs being told how your phone should look. Choice is yours.

FREEDOM! CHOICE! OPENNESS! (Except the freedom, choice and openness to move data between platforms easily etc.)

And things like this:

Moving to iOS was backwards logic. It’s like putting a straight jacket on your phone. Why jailbreak when you can use an open source OS like Android?

How about because the user might fucking prefer it? How about because you don’t want your phone pwned by the hilarious cascade of systemic security failure that is the Android ecosystem?

And one more:

Like I’d ever consider switching to using an iPhone… and as for that slow and buggy Watch of theirs, words can’t describe what a useless pile of overpriced crap it is.

Quite what the Apple Watch has to do with an app to help you move data between Android and iOS, I’m not sure. All discussions of going between mobile OSes ends up in pitiful religious argumentation and if you are just trying to get shit done, it does nothing but incite a lot of eye-rolling.

Fanboy awfulness aside, we re-ran the Move to iOS app once more but deselected the transfer of photos. I kind of figured that if we could get it to transfer things like old text messages and contacts and so on, then we could maybe move the 14Gb of pictures onto the iPhone by hand. They’ll all be stored as JPEGs on either the SD card or the internal storage on the phone.

After waiting some more, Move to iOS chunters everything it can except the pictures over. It kinda worked in a slow, clunky, crashy kind of way. Hardly as “seamless and simple as possible”, to quote Lifehacker.

Next job, let’s get the photos out. I had an Android phone many years ago. This should be easy. Plug it in, it mounts up as a USB mass storage device, drag and drop. That’s, y’know, what everyone tells me that Android did that iOS didn’t—no futzing around with iTunes, it’s just a USB mass storage device.

You’d think that. In the meantime, Samsung have deprecated USB mass storage in their Android devices and replaced it with the Media Transfer Protocol (MTP). Despite coming from the same place as Windows Media DRM nonsense, MTP sounds like a nice idea: unlike USB mass storage, it is a simpler protocol that implements much simpler operations than a traditional I/O interface, perfect for shunting the odd MP3 and JPEG around.

In practice though, actually using MTP from my Mac is soul-gnawingly awful. Obviously, there’s no filesystem that is mounted. For a while, I thought there must be some issue with the cable or that the Android phone had some formatting issue. Silent failures aren’t fun. Eventually, I find out how to switch the device into MTP mode and it then tells me that I ought to download the Android File Transfer app for Mac (you probably shouldn’t be surprised to learn that it isn’t open source). The UI is horrible. Cmd+A doesn’t work. It just randomly disconnects from the phone. And, worse, because MTP has no parallelism, transferring substantial quantities of data is godawfully slow. Especially if it is having to walk a directory tree and retrieve file lists. I’ve now dragged mostly all of the pictures off the phone and stored them on a computer, but systematically getting things other than the pictures off the filesystem has been unsuccessful.

There’s some alternatives, but all require effort. There’s libmtp, which I’m sure is excellent. There’s a rather nice looking Go program called go-mtpfs which will mount MTP devices as FUSE filesystems. That looks like it might be an improvement on the horrible OS X frontend at least.

What’s next then? How about WhatsApp messages? WhatsApp stores messages differently depending on whether you are using Android or iOS and all the methods for transferring between them look pretty damn rickety. They mostly involve shareware Windows apps from websites that give me that disconcerting feeling of talking to a sleazy second hand car dealer. I don’t quite trust any of the purported solutions to this.

I started looking into it myself. The files in WhatsApp for Android are stored in an encrypted SQLite store using a crypto system called crypt7 and/or crypt8. I have managed to extract this file from Android and I just need to decrypt it. There are some tools for this online. Pushing that data to iOS looks pretty simple. On the Mac, iCloud data is stored in ~/Library/Mobile Documents, and within there is a folder for WhatsApp containing a backup of WhatsApp conversations (in SQLite format) as well as media sent via WhatsApp. If one can retrieve the data from Android, it shouldn’t be too hard to push it into iCloud for the iPhone app to use.

All of this is way too fucking hard for non-programmers. The stuff on people’s phones is documentation of their life—their holidays, their families, their relationships, their co-workers. It’s not a part of some stupid platform war bullshit or an ideological debate about free software or DRM or whatever. It’s their stuff and they should be able to transfer it onto any device they choose to use. At the same time technologists have debated the ideal solutions for data portability, and churned out a thousand bullshit specs and documents that don’t do shit, ordinary people switching between iOS and Android (in either direction) have a hellish time doing ordinary stuff like WhatsApping with their friends and family. That’s a ludicrously poor show from our industry.

This is a shitshow. Be ashamed, fellow technologists. We have made a world that disempowers users and locks them in. And when they go online to find out why, all we have to show is a bunch of religious apologists telling them that this is okay because they are locked into a platform for their own freedom. Absolutely fucking terrible.


Today I learned: meta description tags are actually used by Slack for rendering link previews.

It may be invisible (partially visible, really) but when that data seeps through, it can often be wrong.


The Guardian have an interesting piece about Marissa Mayer and Yahoo! I concur with the general point: the primary problem with Yahoo! isn’t Mayer, it is the company itself.