Data-Driven Performance Breakout at Edge Conference

I was lucky enough to attend Edge Conf in London this year, a day that I always truly enjoy. The main sessions of the conference were streamed live and videos will be available later, but the break-outs weren’t recorded. These were the sessions I enjoyed the most and it’s a shame that people won’t see them without being there – so here’s my notes on what was said to the best of my ability (and with a big hat tip to George Crawford for his notes). Patrick Kettner was the moderator.

Q: How can we use the masses of data that RUM collects to get businesses to care about performance?

Business leaders like metrics from companies that they can relate to (i.e. Amazon, eBay) but these aren’t very useful metrics as the scale is completely different. Finding stats from competing or relevant companies is hard, so how do you make them care?

Introducing artificial slowness is one way to convince people, but not good for business. There’s also the risk that you may not see increase in conversion from speed improvements! Filmstrips are incredibly useful at this point to see what’s going on and these are available in Chrome Dev tools in the super secret area.

Showing videos to business people makes it really hit home – people hate it when they can visibly see their site suck. It’s like making people watch a user test for their site. Shout out to Lara Hogan at Etsy (their engineering blog is awesome) for their great work on this, something that Yell has copied.

Metrics that are useful: first render, SpeedIndex, aren’t available in the browser. Using SpeedCurve can really make business people sit up and take notice of performance because it’s a pretty interface to those things.

All-in-all, the standard metrics are unlikely to be the best for you, so add in user timing markings (and a very simple polyfill) and graph those, including sending them to WebPageTest so you can measure the things that are important to you over time. This was done very successfully by The Guardian (hat tip Patrick Hamann).

Q from Ilya Grigorik: The browser loading bar is a lie, yet users wait for it. What metric should it use?

Basically, developers can put their loading after the onLoad event to hack around the loading spinner. If we stop the spinner at first render, it’s not usable. If we stop it at when the page can be interacted with when would that be? The browser runs the risk of “feeling slower” or “feeling faster” by just changing the progress bar. Apparently there’s one browser that just shows the bar for three seconds, nothing more.

No real consensus was reached here, but it was a very interesting discussion

Q: Flaky or dropped connections are important to know about for performance metrics – what can the room say about their experiences gathering offline metrics?

When the FT tried this with their web app they often exceeded localStorage sizes and sometimes POST sizes (25MB) as users could be offline for a week or more. The Guardian had good success with bundling beacons up into one big post to save money with Adobe Omniture/SiteCatalyst.

The best solution is the Beacon API (sendBeacon) which promises to deliver the payload at some point (which images/XHR don’t right now). It’s implemented in Google Analytics, you just have to enable it in the config, other tracking providers don’t have it right now.

Q: What metrics APIs are missing in browsers?

A unique opportunity to ask Ilya to add APIs into Chrome – not to be passed up

  • Frame Timing API – requested as an ES7 observable (which is unlikely).
  • Performance Observer – a subscribable stream of events that will need processing to be useful. This will give accurate frame-rate
  • Network error logging API – could work like an error reporter that posts to a configurable second origin (via a header like CSP)
  • JavaScript runtime errors without hacking window.onError
  • SpeedIndex, or a proxy for it. There’s a script for this already but it’s not massively accurate. Standardising SpeedIndex would be great.
  • First Paint – according to Ilya it’s not possible and quite subjective browser-to-browser

Wrap-up

I’d have loved to stay and chat more (nice to meet Tim Kadlec in person, shout out to the Path to Performance podcast as well), it’s rare to have a lot of the web performance community in the same room at the same time and should definitely happen more often.

If there’s things I’ve missed, let me know in the comments or on twitter (@steveworkman)

A weekend with Android Wear

I’ve been really interested in wearables since I saw the first press shots of the Moto 360. When wearables first appeared (the Pebble, Galaxy Gear) they were the equivalent of a calculator watch – quite useful for adding things together, but awful at telling the time and even worse for your sex life. They were blocky, had incredibly poor battery life and not something you’d even consider wearing on a night out. The Moto 360 made me take notice – a well-designed and, importantly, watch-like appearance gives it the credibility that it deserves. So, when I got the chance to try one for a weekend, I couldn’t pass it up.

My regular watch and the Moto 360

My regular watch and the Moto 360

Setup

The Moto 360 was a lot different to my regular watch. All dressed in black with a thin leather strap, it’s a far cry from my tiny, battered metal Swatch timepiece. At first I was pleasantly surprised by its feel – very comfortable to wear and lightweight, I hardly noticed it was there. It’s certainly a lot larger than my normal watch but I quickly got used to the differences, and got on with my day.

Initial setup was ok, it took two goes to connect over Bluetooth, but it was mostly painless. Then the notifications started raining in – Google Now bombarding me with reminders, weather updates, emails, Twitter, Facebook Messenger and more. At first it was overwhelming, and I wasn’t used to the swipe-to-dismiss, or scroll on to ignore motions. With a bit too much going on the watch also regularly janked and slowed down, not reacting to my input, which was far more frustrating.

The first day

As a watch, it’s really pretty poor

I spent most of the Friday in the office working at my computer. I’d be getting notifications on my phone and on the watch and on my laptop – it was all a bit much. I’d also put my normal watch back in my bag, so telling the time got quite hard. As a watch, it’s really pretty poor. Telling the time it the one thing that watches are supposed to be good at and every time I turned to look at my wrist I’d see a black screen, then about a second later, finally, I’d see the time. Frankly, that’s unacceptable and is one of the real issues that I struggled with during the first day.

I also played quite a lot of music on that day, and controlling that with the watch sounded like a good idea. In practice, I pressed the pause button on my headphones – much faster and far more convenient. It’s another example of a problem that the watch solves that has already been solved in better ways.

In the evening I had a play and found a whole host of useful settings that made the rest of the weekend far more pleasant:

  • Smart unlock – phone is unlocked when near the watch, no more typing in your passcode
  • Ambient clock – the watch is always a watch telling you the time
  • Only show notifications on the watch – no double/triple notifications
  • Silent mode – no noise, just a light vibration on your wrist when something happens

Saturday

During the party the watch went pretty-much unnoticed… It was just a normal watch that people paid no attention to.

This was a big day in the Workman household, we were throwing a party and I was on BBQ duty. We were running around getting things ready, so without time to check our phones regularly, it was nice to have messages popping up on my wrist. Trying to send a message back to someone with my voice was a case of hit-and-miss, so after a few tries I gave up and returned to my phone. It was just a bit too noisy for my watch and it couldn’t understand me properly – at this point the “Open on phone” action came in handy and the watch fell back to being a secondary screen.

I played with a few apps today, and some worked, most didn’t:

  • First-party apps such as Google Keep, Play Music and Maps were great
  • The heart rate monitor only gave a reading a few times, never really changed.
  • Google Fit was interesting, but my Fitbit was more accurate (I believe)
  • PlayerFM (podcast app) was the only third-party app that worked really well
  • Wunderlist only showed me the inbox, did nothing else, crashed a lot
  • TripAdvisor showed me items in my area (after a lot of waiting). That’s not what I use TripAdvisor for, I go looking for things in other places, so that one was useless as well
  • Amazon’s wear app only works in the USA

During the party the watch went pretty-much unnoticed. It was nice to see who was at the door by who was calling me (and the dog announcing their arrival), but it was only in the small hours of the morning that someone said “is that one of those smart-watches”. To me, the watch passed a very big test that day – acceptance. It was just a normal watch that people paid no attention to. A piece of technology that is so obvious on your body but that doesn’t garner a reaction is what I wanted. It’s not a big thing, it’s just a watch.

The watch’s battery lasted the whole party, which is more than can be said for my phone (Moto X 2nd gen). It passes that test for me.

Sunday

That ability for it to blend into the background is something that I didn’t really appreciate before, but really welcome.

The morning after, a little worse for wear, the watch was starting to feel more natural. I didn’t get many notifications, and I felt a lot more relaxed with it. I started weighing up whether I would buy one or not.

We went for a bike ride along the river in the afternoon and the watch stayed out of the way. I could have used it to track my heart-rate, or my journey, but I wasn’t interested in that at all, I just wanted to go for a bike ride, and the watch stayed out of the way – it became just another watch again. That ability for it to blend into the background is something that I didn’t really appreciate before, but really welcome.

I came into this experiment wanting this very watch, and I come out the other side thinking that I still want one, but not that one, and probably not the next one either. The problem isn’t so much the watch – it could be prettier, smaller, more like a watch, but it’s the software. It’s still unintuitive and the apps on there aren’t really apps. It’s a glorified notification reader, with a few really nice features. It’s really bad at telling the time, but that’s not its primary function. I almost feel that I need a watch and then need an Android watch. Third party apps really jank the watch and are so hard to find that it took me a few hours to really start exploring the watch’s capabilities. Android Wear needs more testing – the watches need more CPU/memory power, and developers need to test it out in the real world more. It has to come up with a better solution for “being a watch” which was just unacceptable.

Handing it back

I handed the watch back this morning and now have my watch back on my wrist. It’s heavier than I remember, but I can look down and know what the time is instantly. It serves its purpose.

I don’t miss the Moto 360. I still want one. I don’t want that one. I wish I wanted one more, but I don’t. It has so much promise, but right now, I’m happy to give it back.

On Speaking

I’ve been off the speaking circuit for a while now. After a successful 2012 and 2013, I let my public speaking take a backseat to focus on my new role at Yell. I’m really happy to have got to a point in this role where I can begin to talk at the work that I’m doing here, and there’s a lot that I’m really proud of.

Recently I got back up on the stage at Oxford Geek Night to do Yell’s first technology talk in a very long time. It was a five minute slot, nothing grand, but it was to a room full of people I didn’t know, though many who I recognised from their Twitter profiles but was too nervous to say “hello, I really like what you do”. I was far more nervous before the talk than I’d been in a very long time, the kind of dancing nerves that make you triple-check the order of the slides, even though I’d been through them twenty times. Then, just as I stepped onto the stage there was this serene moment where all the nerves dropped away, I plugged my laptop in, took up the remote and started talking.

And everyone was awesome

I couldn’t have wished for a better crowd – twangs of nostalgia for the brand, laughter in all of the right places, and people listening to the message, which was fantastic. I have no idea if it was even useful for people, but I am so pleased that I did it – and the buzz that goes with it is like nothing else.

So, I’m going to do it again. I’ve expanded the talk so that I can actually go into some detail, and I can’t wait to give it again. I’ve got another date in my diary already which I’ll share soon. Until then, the short version of the slides are embedded below.

I’m Hiring a Graduate UI Developer at Yell

I’m looking for a talented junior/graduate developer to come and join my team at Yell. We work exclusively on the Yell.com search engine, dealing with over 20 million users a month. I’ve got some fantastic senior developers working for me, and we need a junior developer in the team.

Here is the job description on the Yell Careers site

I’m looking for a person who is adaptable and are willing to learn new technology quickly. I’m after a developer who will do the right thing for the long-term, over fixing a problem quickly. I want developers who are familiar with new technology, and how it can be applied to get the absolute best performance out of the web browser, and importantly, I need someone who can appreciate the differences in browsers and know how to get the best out of them, no matter how big or small the screen size is.

In return, you will get freedom to implement features as you see fit, and access to the tools that you need to do your job. The role is based in central Reading, just by the mainline train station (25 minutes from London Paddington). The office itself is large and spacious, with some of the best views over the city, and pretty decent coffee throughout the rest of the building. There’s a whole host of other benefits (including competitive salaries, naturally) that you’ll be told about if you join us.

If you want to apply, or know more information, contact me, tweet me, or just apply. Please note, you have to be eligible to work in the UK or hold a valid work visa to get either of these roles.

If UI development isn’t your thing, Yell.com engineering is hiring for the following roles:

I’ll do my best to strike these positions out when they’re filled, and apologies in advance if I’m not fast enough.

Good luck!