Getting started with Accelerated Mobile Pages

With everyone on holiday over the summer, we’ve had some time at Time to Change to do a few nice UX improvements that have been on the list for a while. My favourite has been getting the site AMP ready on blogs and news stories.

Working in comms, news sites amping their articles has been really useful for me. When stories break I want to know the details fast, and as a commuter, I’m often on a train with terrible signal when those ‘need to know’ moments happen. Getting quick access from my phone has taken a lot of the frustration out of browsing for information, and gradually I started to think how great it would be if everyone got on board with amp – including us.

Deciding to get started

In April I went to Brighton SEO and heard a talk from Dom Woodman about getting started using amp with Drupal, WordPress and Joomla. The talk was great and gave me the confidence to know we could do it, as well as being a good opportunity to ask questions about wider uptake beyond Google’s ‘top stories’ carousel.

Dom’s advice was to get going and sure enough, a few weeks after we completed the sprint, Google blogged an early preview of their plans to expand amp.

Other benefits along the way

As the Guardian worked in partnership with Google in order to get amp working on their top stories, I picked them as a model for how I wanted it to work on our site. One thing I noticed most prominently was the consistent, engaging use of images in every post. At first I wondered how they were able to incorporate images without compromising the integrity of a high speed article, then I noticed the <amp-img> tag and other similar solutions, which we would also use as part of our own installation.

Previously, feature images weren’t something we’d used very often on the Time to Change site, so this has been a real bonus in getting amp ready and is something we’re now thinking about expanding to other content types across the site.

Any compromises

Installation and testing was fairly standard and took the usual month we allow to get new things done. One compromise we did have using Drupal was that amp is only compatible with page content types, which means our comments module doesn’t pull through to amp articles.

If you’ve recently installed amp yourself, I’d be interested to know how this compares to other CMS’ and I’ll be looking out for how Drupal 8 develops as amp popularity grows.

More on amp from Moz >

Using social listening to find and amplify user-generated content

As Time to Change is a social movement, sharing personal stories from people with experience of mental health problems is an essential part of our content strategy.

A lot of these stories we commission from the general public and host on the Time to Change blog, but we’re also a big fan of amplifying user-generated content, to strengthen the voices of people who will ensure the movement  can continue long after our funding runs out.

As we’re such a big campaign, a lot of user-generated content comes directly to us without much effort on our part. People write blogs or produce video content and tell us about it, knowing we’re always looking for great things to share more widely.

But what this doesn’t allow us to see is all the amazing people out there who are fighting for the same things, but doing it alone. Harnessing these voices really drives the campaign forwards because, as well as being stronger and louder together, every person who produces content for themselves has the potential to inspire someone else to do the same – building the foundations of a sustainable legacy.

In order to reach these people, we needed a social listening tool that would show us all the content being produced around the world that related to mental health and stigma. Google is a great tool for finding the top ranking HuffPo and Buzzfeed articles, but those need no amplification, what we wanted was to find everyday people who had powerful personal experiences, wanted to change the world and would inspire others to do the same.

We looked at four platforms that would do this, along with the other operational requirements we had:

Having interviewed them all, we landed on two finalists. The first we picked didn’t work out, they had a few development issues they couldn’t resolve and I didn’t want to keep paying for something that didn’t work properly, so we switched to Meltwater, who have been fantastic.

We’ve been with them a few months now and they do everything we were looking for to help make our social media as good as it can be. We aim for every post to get 600 engagements and 60,000 reach, but invariably our user-generated content found through Meltwater vastly outperforms this, growing our online community and spreading our message of change to a wider audience. This month our top user-generated post gained 8,700 likes and 1.3 million reach – all made possible with a couple of clicks in a pre-built search.

If you’re thinking about using social listening more, for this or the many other reasons, let me know and I can share my notes on suppliers we spoke to.

In the meantime, here’s a lovely post from someone whose blog we shared this month!

Brooke on mental health stigma

Removing redundant web content

This blog is about removing redundant web content from a large site.

Before I start, I should say that a much more sensible person would have got an agency to do this. At several points during the process (which I started in October) I’ve thought I was being far too stubbornly INTJ about the whole thing and it would be easier to hand it over to a bigger team of people who could work on it full-time. But it was interesting and technically achievable – I’ve come to realise I can’t say no to anything that can be described like that.

What were the issues?

During my first year at Time to Change I’d slowly been discovering a lot of redundant content. A lot of it was unnavigable, which I think was part of the problem – whoever created it had left, forgotten it was there or for whatever reason abandoned it to float around the website without its parents. It happens in any organisation, perhaps particularly in busy charities where everyone’s working at such breakneck speed that the phrase “just get it up there and we’ll deal with it later” can become common by necessity.

The tricky thing is that nobody does deal with it later, because we’re all straight on with the next cripplingly urgent thing. And so it continues until there are are over 5,000 out of date pages that no-one but Google has time to notice.

A crucial part of this was that we didn’t have a system for forcing parent page assignation, so bypassing this step and saving everything as a page in its own soon-to-be-forgotten-about right became inevitably common practice overtime.

A further contributor to the problem was that we had no processes in place to deal with content that had a known shelf-life, so community event listings from 2011 continued to sit there gathering dust in the absence of an agreed way of unpublishing and redirecting them.

How did we address these?

As well as dealing with the content that needed to be removed, I’ve been keen to make sure we improved our set-up to negate the need for such a time-consuming audit in the future. With a bit of development, now when people add content to the site they’re asked to assign a parent by default, and an auto-generated url now inherits that breadcrumb trail as standard.

To deal with the event listings, I’d hoped for a module that would manage these automatically based on a set expiry date, but the slightly more laborious alternative of manually setting an auto-unpublish date when approving the listing and then using Siteimprove to pick up the 404 for redirecting is a fine substitute.

Incidentally, Siteimprove has also been great for us in a number of other ways, and I found you can haggle them down fairly substantially from their opening service offer, I’d definitely recommend them.

How did we ascertain the redundant content?

Although we can export all pages on the site from our CMS, I wanted to make sure we knew which were the high performers so we were making removal decisions within an informed SEO context. With that in mind, I picked the slow route of exporting them 5,000 rows at a time, in rank order, from Google Analytics. 

Once I had a master spreadsheet of 17,000 pages, I looked through the first hundred or so to identify any top performers that might also fit the removal bill. Happily there weren’t any I could see that ticked both boxes – top performers were, as you’d hope, well used and positioned pages, or personal stories and news articles that remain indefinitely evergreen.

With that reassurance locked down, I could sort the spreadsheet alphabetically as a way of identifying groups of similar pages – e.g. blogs, news stories, user profiles and database records which we wouldn’t want to remove. It also identified duplicate urls and other standard traffic splitting mistakes. I then selected and extracted these from the spreadsheet, cutting the master down to around 10,000 pages.

Next I wanted to filter out the dead links, because we now had Siteimprove to pick these up and a weekly digital team process of redirecting highlighted 404s crawled by the software, so they didn’t need to be included in the audit.

As GA exports urls un-hyperlinked and minus the domain, I needed to add these in. I used the =concatenate formula to apply the domain and the =hyperlink formula to get them ready to be tested. I then downloaded a free PowerUps trial and ran the =pwrisbrokenurl dead link test for a couple of days over the Christmas holidays. It’s worth saying my standard 8gb laptop struggled a bit with this, so if you have something with better performance, definitely use that.

PowerUps divided my data into broken and live links so I could filter out the broken ones and be left with an updated master spreadsheet of every page that needed auditing by the team. There were just over 6,000, which we divided between us and checked on and off over several weeks, marking them as either ‘keep’ or ‘delete’ and fixing the url structures and parent assignation as we went.

That process identified 1,000 relevant and valuable pages to keep, and 5,000 redundant, out-of-date and trivial ones to remove. Past event listings make up a large proportion of these, but I’d also say you’d be surprised how many other strange things you find when you do something like this!

What’s next?

Now we know what we’re removing, I’m going to get a temp to unpublish and redirect it all, which I hope will take about a week. From there I’m going to look into how we might go about permanently deleting some of the unpublished content, as a spring gift to our long-suffering server.

Once that’s done we can move onto the content we’re keeping, so the next phase of the audit will be about ensuring everything left behind is as fit for purpose as we can make it – I expect this to go on until the end of the quarter.

That time should start to give us an indication of Google’s response to the removal of so many pages. I’m a bit nervous about this and prepared for an initial dip in traffic, but by Google’s own standards I’m hoping for a curve that looks a bit like this:


I’ll keep you posted!

Initial thoughts on Facebook’s suicide prevention tool

Over a year ago now, I blogged about Samaritans Radar, a tool created by the charity that caused a lot of controversy amongst the strong mental health community on Twitter and elsewhere.

I agreed with a lot of the issues people raised, though for me privacy wasn’t top of the agenda, my worry was more around the obligation it placed on individuals to take responsibility for the safety and welfare of others – something our Government should be doing and, increasingly, isn’t.

Since then, Samaritans have been working on an alternative, something I was vaguely part of in the early stages, attending a couple of round-table feedback meetings and sharing my own experience of managing these issues on social media, in an interview format with the Samaritans digital team.

This week, Facebook have launched their suicide prevention tool in the UK, which takes elements of what the Samaritans wanted to achieve with Radar but looks, at face value, to be safer and better.

Three great things

1. Anonymity for the person flagging that content to Facebook, which means they can look out for their friends without feeling alone and overwhelmed with the responsibility for keeping someone safe


2. A practical and empathetic support journey for the person who’s feeling suicidal, including a prompt the next time they login


3. Support options which connect them (anonymously and by choice) to the Samaritans, who are trained and able to provide the right help. They also get the option to connect with a friend – something that might feel more possible once you know for certain that at least one person in your network is worried about you.

In general I think there is a place for providing interventionist support within social media platforms, but I do have some reservations about the term ‘prevention’ and its potential to reduce the pressure on other agencies to create a society where 6000 people a year don’t attempt and succeed in taking their own lives.

I’m also wary of the passivity of asking for help in such a vulnerable and indirect way – if people need help they should believe in our systems enough to know they’ll get it, but since so much evidence into crisis services suggests that they won’t, people are left posting on Facebook and hoping somebody cares enough to respond.

Image credit: Felicity Morse, BBC Newsbeat.

Upscaling server capacity – part 2

Last month I blogged about how Time to Change would manage the exponential increase in server load caused by our annual marking #timetotalk day.

I talked about having six plausible options for managing the load and about the decision to choose a combination of Varnish and an additional overflow server to cope with the day’s traffic.

Setting these up was relatively painless but did involve a last minute need to migrate the whole site to a new primary server, because Varnish, for want of a better explanation, didn’t like the old one. Once that was done we were basically all set, we just had to make sure it excluded the dynamic tools we needed to run in realtime.

What was load like on the day?

Traffic levels were pretty much in line with what we expected, an increase on last year and way more than our standard infrastructure could have handled – in the end just under 50,000 sessions in 24 hours. Social media was a big driver to the site, with just under 60,000 tweets on the hashtag throughout the day – trending until about 5pm, and then again in the evening.

How did Varnish perform?

I can’t recommend Varnish enough – we set it up to manage load balancing and it handled just over two million requests through the day and barely broke a sweat, we used only 10% of our primary server’s memory, going nowhere near the overflow at all, and page load speed was a satisfying 3.2 seconds – it was perfect.

How was everything else?

Ironically after all that, our database ran into a bit of trouble around lunchtime, processing so many form requests that it crashed for around 10 minutes. But that was minor and we’ll upgrade it and increase capacity for next year – watch this space and, in the meantime, get installing Varnish!

Upscaling server capacity – part 1

At Time to Change we generally get around 1000 visitors to the site a day. On peak days, like World Mental Health Day, this might double, but there’s enough flex in our server capacity to manage that without issue. Once a year though, the first Thursday in February, we run Time to Talk Day – a massive single day campaign to get the whole country talking a mental health. We’re lucky, it’s very successful, bigger and better every year we do it – just last week I was in a meeting with someone from an agency wanting us to pay to trend that day, we were all quick to point out we organically trend all day anyway, without paying a penny. Very, very lucky.

The downside though, if we can call it that, is that we’ve now reached a point where our site’s infrastructure is not equipped to deal with the spike in traffic, which last year reached 32,000 visitors and tripled the time it took pages to load for supporters wanting to take part in the day. It never went down, which was a relief, but it was painfully slow, despite our most ambitious estimates and load tests in the preceding months.

So it’s my job this year to make sure we’re ready, not ready for a sensible growth on last year, but really ready for the kind of numbers we feel arrogant even talking about – just in case. In previous jobs I’ve just called the hosting company to increase the server capacity, maybe even kick a few smaller charities off to give us maximum breathing room. But the issue at Time to Change is we’re already on the biggest physical server, at its highest capacity, so the standard option isn’t an option for us. Ruling in and out the various alternatives has been pretty stressful as they all carry risks and, as ever, it’s a ridiculous time of year with millions of other urgent things happening at the same time.

So what are the options?

  1. Caching – improving this made a great dent in our performance by increasing our capacity by 20%, but we need more than that to get through Time to Talk Day
  2. Move to a virtual server – this does solve the immediate issue as the capacity is exponentially better, but then we’re left with a problem of poor performance due to underload the rest of the year, so it’s not a good long-term solution
  3. Temporary, reversible migration to a virtual server – this is a possibility but a very risky one as you never really know how your site’s going to perform in a new environment until it’s had some time to bed in and be tested to its limits in a live setting – none of these we really have time for
  4. A microsite – if I was a web developer I’d probably go for this, move the entire problem into an isolated container that guarantees the stability of the main site? Sounds perfect. Unfortunately I work in comms and microsites are a brand and UX sacrifice I can’t live with, so we’re not doing that
  5. Varnish – the Iron Man of caching systems it turns all your dynamic content static (except the bits we need on the day) and improves performance by about 50%
  6. Match our current server with another and load balance on the day – like an overflow unit for when the traffic hits its peak

I’m going for 5 and 6, we’ve got just over a month to get it right and in the meantime I’m site auditing our 10,000 pages to make sure we’re only working as hard as we need to. In part 2 I’ll let you know how it went!

PS – another way to find out is to take part in the day, 4 Feb 2016, let’s get the nation talking about mental health.

Why sprint cycles work for me

I’ve been lucky enough to inherit my job at a time when digital was expanding for Time to Change.

Previously development work could be easily contained on an ad hoc basis, with emails back and forth to manage each project and few enough demands on a small team to make this possible.

Since joining, that’s changed and I needed a system to ensure workload and delivery schedules could be predictable, to satisfy the demands of internal teams as well as ensuring we could confidently meet our own commitments for development and growth.

To achieve this I set up a sprint cycle system, managed through Podio, the online project management tool. 

How our sprint cycles work

During each month I plan for the following sprint, working out priorities for development within our team as well as communicating more widely with the rest of the programme about ideas they might have to make their jobs easier or better respond to user experience issues they’ve identified.

I then wireframe all the ideas to check everyone’s on the same page and collate all this into an amount I think can reasonably and logically be achieved in a given month, then email the developer with a headline description of the forthcoming work. This is an important step because it gives him the chance to identify any areas that might be more difficult to achieve or require greater resources that we have available.

Once I have the go-ahead, I begin writing a detailed brief, dividing the work into sections (usually by team or area of the site) and within that splitting each component into individual tasks. I then email for a formal quote.

Once the quote’s received and approved, it’s usually now the end of the month, I set up an e.g. “October sprint cycle” project on Podio for the upcoming month and upload the brief.

Once the first of the month ticks round, the developer starts work and usually completes the first daft on staging within a couple of weeks, having checked any small details with me via the project comment stream. Then I’m ready to begin first round user acceptance testing.

Testing involves gathering all internal stakeholders and/or recruiting external user testers for bigger projects. It follows a similar process to briefing, I take the original brief and allocate each task a place in a UAT table in Word. Table headings are usually Job (component of work) Status (further work / ready to deploy)  and Notes (explanation of edits, etc) As I check each component and run through it with the team of testers, feedback and status confirmation is entered into the table and presented back to the developer.

Edits are then made and the same process repeated until the status of every job is “ready to deploy.” At this point it’s a couple of days from the end of the month. The developer deploys to live, giving us enough  time to work out any live environment bugs. Internal stakeholders are gathered again for signoff, they can make minor tweaks or alert me to any strange browser or mobile behaviour I can’t replicate, but all “actually can we also have this” requests are labeled as new requirements and will go into the next month’s sprint.

Final tweaks are made then that’s it, sprint delivered, everyone’s happy and the whole thing begins again  the following month.

I find this by far the easiest and most efficient way to manage development. It does lead to stressful spikes in workload, but as long as you’ve planned for those, built in the time and prepped everyone in advance, you’ll be fine.

I hope this is useful if you’re thinking about moving to the sprint model!

A record breaking post – thoughts on its success

A couple of months ago I had a record breaking Facebook post. It was ridiculously successful, certainly the biggest post for Time to Change, but I was at a conference a little while ago and Oxfam were talking about their biggest ever post reaching 5 million people. Ours was 8.2 million, suggesting we might have beaten them too…

I’m generally alright at predicting how well posts will do and I was pretty sure this one would be post of the month, but post of the whole seven year programme was definitely unexpected!

This was it, for Depression Awareness Week 2015. It got 19,505 likes, 100,976 shares, 550 comments and a reach of 8.2 million.


“Today is the start of Depression Awareness Week 2015.

Whatever depression feels like for each of us who experience it, no one should feel ashamed of what they’re going through.

Our latest personal stories on living with depression and challenging stigma:


depression awareness week

Because it was so unusually successful, a few people asked why I thought it did so well.

Here are 10 things I came up with

  1. Luck – sometimes there’s no competition, you just get lucky and your content breaks through the noise of the day
  2. Awareness days are always big – it’s pure social capital, everyone wants to be part of the action
  3. It’s depression – the most common of all mental health problems, often traversing the field of mental health
  4. Timing – I was a little bit cheeky here as it was Depression Alliance‘s day, I kept an eye on their page on my commute thinking if they post before 9am then the rest of the day is fair game. As it was they still hadn’t posted by 9.50, so I decided to go for it. Being the bandwagon people are jumping onto is a huge advantage, it would have been totally fair if that was Depression Alliance’s bandwagon, but I wasn’t going to wait all day for them to get there.
  5. Layout – a couple of years ago I downloaded this app called Diptic and, when I was working at Mind, tried out a post in one of their 4 square formats. It  turned out to be really popular, so I’ve been using that format quite regularly since
  6. Personal stories – I tried to make the copy on this as relatable as possible, using some of my own experience but written in a way I knew would ‘work’ as well as experiences from people who had written blogs for us in the past. This makes the most of social capital, people share it because it’s how they feel too.
  7. In the final box I used some really campaigny language, which I knew had the potential to energise every single person who likes our page, because it’s the best of what we do in one inspiring summary
  8. Headlines – in my experience, posts with headlines do better than posts without
  9. Inclusivity – I never want to be top down when I post, never giving a piece of content to our audience, but sharing it with them as equals
  10. Copy format – I think this is the ideal layout for a post, I wrote it a few times, testing different word and character configurations on mobile and desktop until I was sure it would perform well

They’re my 10, you might have others, or have had similar success yourself, I’d be interested to hear!

Why we shouldn’t use trigger warnings

I had to do something I really disagree with today and it’s something I truly believe puts people in danger. I posted an article containing triggering images about anxiety, with a warning for people not to look if they were likely to be triggered by them.

Shortly after I posted it, we had a comment from a supporter saying “Well don’t bloody post it then if it’s going to trigger people.” This is the essence of everything I think is wrong with trigger warnings – the content isn’t safe, we know it isn’t, yet we choose to post the article anyway because somebody came up with a flimsy get out of jail free card which we tell ourselves makes it alright.

The argument I lost in the office today was whether or not a warning gives people a choice about whether to read an article or not. I say it doesn’t, certainly not in mental health, all it does is give people a big red button and a line of text telling them not to push it.

Speaking from personal experience, anxiety and control issues are often about boundaries. Sometimes you want to push yourself, test yourself and see whether it will hurt. A lot of people also want to know they’re not alone in their experiences – they’re following a Facebook page to be part of a community, so posting something and telling a section of your supporters to stay away from it always feels to me like poor community management.

To my mind,  however much we stand to achieve from sharing content, I never want to be in the position of baiting supporters for PR gain. It feels like an abuse of our position and of the trust people place in us to set an example and do the right thing.

In my previous job I was a community moderator and there trigger warnings were constantly misused. People casually posted graphic images of self harm and thought that a lazy ‘tw’ at the beginning of the post absolved them of any responsibility for the harm it might cause another user of the site. We always took those posts down because if something isn’t safe then to us that was the end of the story.

There’s a lot of debate around the issue of trigger warnings but to me it’s simple, do you want to be the kind of community manager who gives people hope or the kind where people say “they’re great, but sometimes their stuff gives me panic attacks.”

I don’t think anyone really wants to be in the latter camp, so let’s stick to the safe inspiring stuff that doesn’t carry that risk.

Charity spending is right and necessary

Every now and then, wherever I work, I have to brace myself for “could you advertise these jobs?” or “could you share this blog from the CEO?” These are both pretty routine things and shouldn’t involve setting aside half a day to argue with people on social media, but invariably they do.

Charity spending, lobbying, expanding, any action that implies progression in a cause which I hope we all believe is right and necessary consistently provokes a dispiritingly naive backlash from a vocal few.

This issue angers me not because I resent the irony of spending valuable charity time engaging in futile conversation, but because I believe in the bigger picture – I want us to beat cancer, to end mental health discrimination, cruelty to children and people drinking unsafe water. I don’t believe money spent or high level conversations had in order to achieve these goals are unnecessary or wasted, I believe they are in fact the only way we’ll get to where we need to be within our western capitalist structure.

This framework is something we cannot change and I find it unbearably frustrating when successful charities are damningly compared to a group of five people working for free in a tiny room above a shop, they are not more worthy of your time or more committed to an issue you care about because they don’t spend money on achieving it. Instead, they are unknown, they can’t make any difference in the ways that count because nobody knows they’re there, they don’t have any political pull, they can’t afford to hire the best people for the job, they can’t get anybody to donate to them, fundraise for them, strategise for them or spread their message of change.

If we need any more convincing on the roadmap to making a difference, we need only to turn to the person next to us and ask them to name a charity. Did the person next to you say Macmillan, Cancer Research UK, Greenpeace, Oxfam, UNICEF or Amnesty International? How many named Green Light, a tiny Cornish charity working with autistic children whose website is impossible to find because they’ve decided not to invest in a good enough web manger who knows how to address that?

Success costs money and it’s not money that’s wasted, the successful charities are the only ones who are changing the world. Everybody who works in the sector could earn more outside of it, but we’re here because we want the world to be a better place. I don’t feel my salary is profligate, I’m a manager at a big UK charity and I share a one bedroom flat with my partner and my cat. We’d like to own a house one day and maybe upgrade the cat to a baby, these are ordinary things but they feel very out of reach for us. And yet I have no interest in offering my skills to the private sector because I believe that what I’m doing and what I’m part of is making a difference to people’s lives. As long as that remains our motivation to keep growing and reaching then that’s exactly what we should do.