I thought removing Meta from my life would be too hard, especially WhatsApp. But I’ve made great progress in 2025. Back in January, Meta decided to make their hateful conduct policy homophobic and transphobic. It now says: Do not post content targeting a person or group of people on the basis of their protected characteristic(s) with insults about mental characteristics… We do allow allegations of…
“This is bullshit”, Marc Lewandowski quite rightly said when his ballot arrived in Melbourne with just three days to get back to the UK before polling day. With stories like Marc’s emerging every election, it’s natural for online voting to come up as a possible solution. It’s not though, as it introduces too many risks to election integrity. Ask nearly any computer security expert why not . Ask…
I was pretty excited about finding a project that would give me an excuse to learn Rust. That excitement faded away after just a few minutes when I realised the data-based website I wanted to build was simple enough that I could punt everything to the frontend and let it handle the filtering and sorting. So I dusted off my Angular skills and threw together a little site in a couple of hours. A…
I love my data and do everything I can to keep it. When I recently rebuilt my home server I took the opportunity to improve my backup recovery strategy in case the worst happens. Here’s the new setup: I have two sets of files I care about: Documents: stored on the laptop and home server Media library: stored only on the home server Documents are stored on my laptop and synced with my home server…
Dear Dara, At the end of a long day of celebrating the 50th anniversary of the dawn of the modern LGBTQ+ rights movement at Zurich Pride, my boyfriend and I ordered an Uber to go to a nearby gay bar. I didn’t think anything of it when the first driver cancelled our ride after accepting it. Nor the second or third. But by the sixth I started to wonder if it was because the destination was a gay…
“I agree with Jacob Rees-Mogg” are words I never expected to pen. However, talking about the shocking treatment of the Windrush Generation, he said We are not the sort of country where you are expected to show your papers to prove who you are. The basis of our historic freedoms is that if you go about your business lawfully you never have to prove to the authorities who you are... That is…
Moving to a new city for a new job is a good time for reflection and an opportunity to make some adjustments. I’ve done that, and it turns out it’s all boiled down to one word: prioritisation. The reset I tend to fill my life with a lot of stuff; too much, by some accounts. So I stopped and asked myself Where can I be most effective and make the biggest difference to both myself and others? Where…
The original plan was Land’s End to John O’Groats. But that wasn’t far enough. So, naturally, I decided to ride across Europe instead. In May 2016, I set off from Porto with a rough plan to reach Munich. Six weeks, 3,200 kilometers, and countless pastries later, I actually made it. Highlights reel: 40 days in 4 minutes I carried a GoPro to document the suffering. Below is a supercut of the trip:…
As you may have noticed, I’ve so far failed to write about my South American adventures. Fear not, I have been taking notes and I’ll turn them into some coherent words soon. Today, however, I’m going to write out of sequence about the last week in Ecuador, where I’ve been preparing for a big climb on Saturday night. The beautiful Cayambe was my first stop on Tuesday. Ascending to around 5150…
It’s with a very slightly sore head I write this final chapter in the diary of my pedal from Porto to Munich. When the waitress said they only served the beer in steins, I thought that would be fine. It was, last night. Beer goes down very well when you’re dehydrated after a 95 kilometre ride, sat in a sunny beer garden. Anyway, back to the final 3 days of cycling from Zurich to Munich. The…
I’m really not in the mood for writing this but here goes. And we’ve got a lot to cover, too, all the way from Grenoble through to Zurich, so make yourself comfortable. I fretted over the route from Grenoble through to Zurich for a bit but finally decided to take the route through the Alpes via Chamonix rather than going via Geneva. I’m glad I did. My legs aren’t, but the rest of me is. On the…
It’s a shame I’m penning my update for the three most dramatic days of cycling under the cloud of the EU referendum result. I couldn’t bring myself to write yesterday on my rest day as I usually would and even now can only do it because I’m going to go on a diversion first to write about the result as I need to clear my head of it before I can write about the ride. I gave up trying to sleep at…
My inner dread probably isn’t coming across to any of the other cafe-dwellers enjoying their morning fix. Tomorrow sees me heading up into the Alpes, starting with the infamous Alp D’Huez. After some deliberation I’ve settled on a route heading over to Chamonix then down to the Rhone Valley in Switzerland to arrive in Zurich a week today. That means the next three days each has at least 2,000…
Sleepy, pretty towns are two-a-penny throughout the south of France. A few years back we rented a villa in one such town, which I never expected to come back to. My route took me nearby, though, so I decided a little detour was in order to come back to say hello. I’m glad I did, given the great place I found to stay. This rest day was much-needed after the last 700 kms or so without one. As avid…
One of the great things about travelling is the random decisions you make that have wonderful outcomes. At the last minute I changed the destination for my latest rest day to Bagneres instead of Lourdes, as it gave me a better base from which to both tackle Tourmalet (more on that later) and a good trajectory for my journey into Languedoc next week. As a consequence, I happened upon Au Chat…
A quick update from me today as I didn’t quite find time to write this yesterday on my rest day, but am hammering it out over breakfast as a 130 km ride looms. The three days from Santillana del Mar through to Pamplona were quite gruelling. I did a back-of-the-envelope calculation and my little detour was about 50% further and 5 times more climbing than the direct route from León to Pamplona. I…
After following Camino de Santiago a bunch of the way so far, albeit in reverse mostly, the last three days saw me heading to the north coast through a stunning national park. Firstly, some numbers. I’ve now travelled about 800 km and climbed nearly 9500 metres. Nearly two weeks in, and nearly a third of the distance (phew, things seem to be going according to plan so far). This time next week…
First off, an update on the Garmin relationship. We seem to have reached an uneasy truce, where it realises it needs me for charging and I need it for routes, and has been cooperating much more in the last few days. I’m sat in León enjoying the beginning of my second rest day, having spent the last three days riding from Melide, about 270 kms. When I look at my position on a map, it finally feels…
We started the day so well-paced, but then as the kilometres ticked along you started outpacing me. Only a little to start with; so little that I didn’t notice. But an hour in and I could barely see you in all your blueness. Then things started getting nasty. The taunts, the jibes. I was the one on tired legs, you’d not cycled the two earlier days. That didn’t seem to matter to you. You could have…
Today’s post is dedicated to the amazing Spanish car drivers. For once I’m not being sarcastic. Quite possibly the most considerate drivers I’ve encountered. Most would give me an entire lane when overtaking. Much needed considering all this rain. So, thank you! So, the rain. Whoever did the rain dance so I’d not feel homesick, it was very kind but you can stop now. Please. After a near-sweltering…
Phew. Day 1 is over. In a rhetorical answer to my question yesterday, Nat, as to whether 110 kms a day would be enough: yes it is. I’ve just had a shower, stretched, devoured a sandwich and some cereal (yes, I know it’s the afternoon and, yes, I know I’m no longer a student) and just about feel human again. Turns out the extra 10kgs on the bike is quite noticeable when it’s 25 degrees and hilly.…
Well here we are. The bike’s been serviced, many things ordered online, and much (well, a little) planning done. It’s now only two days until I fly to Porto with my travelling companion for the next six weeks: my bike. A photo posted by Tom McAdam (@tmcadam) on May 16, 2016 at 5:31am PDT I plan to next use any form of transport other than that when I fly back from Munich at the beginning of July.…
Dear Tom, Sat here in April 2016, having spent the last few years inventing my time-travel letter posting machine in my spare time, I'm going to test it by sending you—well, 2011 me in fact—some words of wisdom for the years ahead. Let's hope this machine works. Hindsight is a wonderful thing after all! Before you do anything else, stop and prepare for an imminent catastrophe. Well,…
We've all done it. Knee-deep in some code, we've seen a block we don't really understand and thought "I'll just leave that there because I'm not entirely sure what it does, but it must be doing something". It's the less risky option, right? I mean, if you don't touch the code then it won't break. In the short term, yes, but long-term the risks build up and up. I was sat in the newly-opened…
The first time I get asked for a list of things I share that list with whoever asked for it. The second time I say "great, I've already got that list together for so-and-so. Here it is.". The third time I put it on the web. This has happened in the past in the form of places I love around the world and my Chrome extensions . So today I'm adding to that collection with a list of my favourite…
In a little over a week’s time, I’m going to be heading to Paris on the Eurostar, only to cycle back to London. Why would I do this again I hear you ask? Well, last time I went from London to Paris, so I’m doing it the other way round this time. More importantly, I’m raising money for Room To Read . The ride is being organised by TechBikers ; born in 2012, they’ve raised an amazing £170,000 for…
If you've read a few of my posts, you'll know how much I love AWS. I especially love the flexibility of having a very large set of resources at your fingertips, ready to scale up or down at the push of a button, or automatically, as you need. That can be a disadvantage though, too. Through an accidental check-in to one of our public repositories at work , we recently had leaked some infrastructure…
You know the score: you skim-read a bunch of articles on Hacker News and one catches your attention. You then can’t for the life of you find it again. This happened to me a while back after reading a great article on problem solving, and wanting to share it with the team. Thankfully, after a few half-hearted attempts to find it, over the period of about a month, I hit the jackpot: You Must Try,…
At work we use Puppet to keep our server configuration, and therefore ourselves, sane. We've recently been playing around with the venerable Vagrant to help in testing new configurations, without having to push to test hosts in the cloud to do so. Why? There are advantages galore in this approach. A couple of the biggest wins are easier branching of configuration, and reducing the turnaround time…
It was last Monday afternoon that it suddenly dawned on me. The feelings had been brewing ever since I first laid eyes on it: all that resource at a click of a button, who wouldn't be swept off their feet? But it was then, after yet another day of seeing it in all its glory, I finally admitted it. I'm head over heels in love with the cloud. "What changed?", I hear you ask. Well, it was a pretty…
I finally got to play with Java 8 streams and lambdas in more than a "Hello, World" way a couple of weeks ago. It was all pretty basic stuff—a map here, a few filters there, a sprinkling of counts—but it's lovely to finally have first-class support for things we've been using in Guava for years, and lambdas make the syntax much more terse and readable. The only hurdle I had to overcome…
To make things snappier for web clients, all our APIs at work support CORS . Avid readers of the MetaBroadcast blog will remember that we've already talked about the fun and games this involves, but today I'm going to cover a particular subtlety that we missed previously. Less-than-helpful error messages are less-than-helpful Debugging CORS problems is Not Fun. Browsers don't deliberately mislead,…
We have a flexible working policy at work . That means that, so long as it’s fine with your team and you’re around for our daily Happy Hour at midday, then all’s good with your preferred working pattern. In that vein, some people work from home one day a week, me included. It’s quite straightforward to work from home as effectively as working from the office, but it needs a little planning and…
I've lost count of the number of times I've had to dig out a link to the JSON prettifier Chrome extension I use, having been asked "which JSON prettifier is that?" by the person looking over my shoulder as they stare jealously at the beautifully-prettified JSON in my browser with its sexy counts of array elements. Since the search term "sexy JSON formatter" doesn't work too well and "JSON…
I read with interest Amazon's recent announcement about the new T2 range of instances with burstable performance. On the face of it, they look like the perfect fit for unpredictable workloads, such as API servers for MetaBroadcast 's Atlas API . The API is served by instances running in an auto-scaling group , where we use various metrics to trigger changes to the number of instances. However,…
A new competitor to Team Sky has recently emerged from the heart of Bloomsbury. Composed of MetaBroadcats past and present, and with three members cycling RideLondon this year, Team MetaBroadcast has been gathering pace for a little while now and is getting to be quite a crowd. It was only a few weeks ago, though, that we went for our inaugural ride together. After some negotiation on the start…
Today I was going to write about the inaugural Team MetaBroadcast ride we recently went on. However, events have overtaken me, and that'll have to wait for another day. Instead I'm going to write about my new-found love: Hive . At work we're analysing some largish datasets at the moment, and it's fallen to me to get a feel for them with some ad-hoc queries. We've previously done this with some Pig…
I love getting out on my bike at the weekend to enjoy what the countryside of Surrey has to offer. Not least because I'm lucky enough to have a place in the RideLondon sportive in August, so getting some miles in will help that be less painful. Tracking rides and progress is quite useful so, like many others, I use Strava . It's great if you're cycling alone but want to compare yourself to others:…
TL;DR: keep a copy of the HTTP spec nearby at all times. We've been doing a lot of work recently on a shiny new self-service interface for getting your hands on an Atlas API key. As part of this, we've created new endpoints in Atlas 4.0 for performing administrative functions, such as creating and configuring API keys, which are used by an AngularJS front-end. One particularly gnarly thing came up…
Security is always about making trade offs, and credential storage is one such case where you need to juggle usability against security. Take our server configurations at work , for example. So we can sleep at night, they're all handled by Puppet . That left us with a dilemma: if everything a server needs to start up is in Puppet, that also means it needs to know about secret stuff. all our eggs…
We spend a lot of time writing APIs at work : not only our external ones in the form of Atlas (the video and audio index) and Voila (our media product engine) but also the many internal ones which provide data to them and our other products. We therefore also spend a lot of time trying to make our APIs as pleasant to use as we can. At last October's MetaBeerTalks, I talked about how we do this. As…
We recently had a discussion in the office on when the decorator pattern should be used, and when the template pattern may be better. We came to the following conclusion: If the system’s correct behaviour 1 relies on decorators being used in a specific configuration, use the template pattern to enforce and document it. Let me explain the rationale behind this. It’s probably easier with the help of…
It’s the little things that make all the difference. I often find myself with a few terminal windows open, jumping between hosts, getting rather lost as to where I am. Accidentally running things in production instead of a development environment makes me unhappy, so I wanted an easy, in-your-face-but-not-too-much way of seeing what environment I was in. We actually did this ages ago, but it’s a…
Every so often I find myself needing to connect VisualVM , a JVM profiling and debugging tool, to a JVM running remotely in EC2 . Despite a few attempts to get it working using a SOCKS proxy following one of the many guides available, I’ve never managed to crack it and always resorted to temporarily opening all ports from within our VPN. It’s generally quite a frustrating process, so I decided to…
As anyone who’s read Joshua Bloch’s Effective Java will know, immutable classes are generally considered to be a good thing. It’s easy to read such arguments and agree, but it’s always useful to see real world examples to back it up. And, as you may have already guessed, we recently came across such a case. Background At work we use MongoDB for most datasets held in Atlas at the moment, and for…
I think it’s fair to say that the third and final day of cycling wasn’t as smooth as it could’ve been. After a good night’s rest we set off at about 8.30 with surprisingly few aches. A pleasant trip through the suburbs brought us to the road we’d be following for the next 20 miles or so. So far, so good. Except for said road. Whilst not quite an Autoroute, it was a 70 km/h dual carriageway laden…
With the ferry leaving at 11pm and arriving at 4am local time in Dieppe, we hoped for a little sleep. And we were right, we got a little sleep: about two-and-a-half hours to be precise, thanks to the combined efforts of the shouting French people in the cabin next door, and the staff eager to wake everyone up nearly an hour before we disembarked. Still, better than nothing. I’ve ranted before…
As the midday bells rung out across Parliament Square, with the sun beating down, we began our journey. Actually, only one of those statements is true and, surprisingly given the recent weather, it was the latter of them. As the midday bells rang out across Parliament Square I was sat on the corner of Whitehall waiting for my sister. As I was to find out later, that would become the theme of the…
It feels a bit like deja vu, all over again. Just over a year ago I had to pull out of the London Marathon, again, and had high hopes for doing it this year, having had a year of recovery. Again , things didn’t go according to plan and that niggle in my foot turned out to be more serious than the word niggle gives it credit for. I’m still trying to fix that and, thankfully, (or perhaps not) I was…