Analysis

Performance testing images from a customer perspective

Recently we moved Net-A-Porter to use a dynamic product image service created by our Product Management team. Not only will it allow us to improve our customer experience but it will decrease the time to get products to market.

MRP (Mr Porter) and TON (The Outnet) had already implemented the system but at NAP (Net-A-Porter) we were waiting for a few additional features, and also see how it handled the other brands.

Previously NAP had all of the image assets mounted to the web servers with a CDN sat in front, allowing for them to be served extremely quickly. We wanted to make sure that the service creating and storing the images for us wouldn’t degrade performance for our customers.

We wanted to be able to collect performance metrics to compare NAP image performance to the other brands. I created a simple tool to test different image requests in bulk and collect the average response time.

Continue reading

Continuous Delivery

How we do: Deployment

Deployment can be a tricky topic to tackle. You want ease of use, reliability, speed and consistency, right?

The trouble is that many deployment strategies can be burdened by a slew of good ideas that don’t quite work, pipelines that have been set up in the wrong way for your project, or tight coupling to different applications that aren’t always in your control. THE OUTNET Tech team have come up with an interesting approach that has been working very well for our front-end JavaScript bundle applications, which I’d like to show you.

Continue reading

Conferences

Adventures in San Francisco – part four, Google I/O 2016

After my previous visits to Sauce Labs, Google and Keen.io, it was finally time for the main event. I was lucky enough to get tickets for Google I/O through some of the Polymer work we had done over the last year. As I mentioned in part one I have never been to San Francisco before, so I didn’t have a previous I/O to compare it to. However, I know they changed up the format this year, giving it a more “festival” vibe — I assume to differentiate it from other conferences and be more “Google”.

I’m going to cover the bad, the good, the highlights, and the things I learned.

Continue reading

Javascript

Profile-Driven Development

Now, don’t worry. I’m not here to force a new programming methodology upon you. Instead I want to highlight how profiling can, and I think should, be an important part of your development process, and how it can help improve code quality.

A few months ago, we (the tech team for Net-A-Porter.com) were getting ready to launch our newest application – a new webapp to serve all of our product pages. But during load testing, we noticed very high levels of CPU activity on the server.

Continue reading

Performance

Why a killer Google PageSpeed score isn’t the end of your optimisation challenge

We don’t like testing the patience of our customers. So, like most e-commerce businesses, the technical performance of our site matters.

Measuring performance has become a core part of our development process. But occasionally it feels we focus too much on one specific metric; our Google PageSpeed score.

Continue reading

Hack Days

Promoting team rivalry through Fantasy Football

Robin have you played your wildcard yet!?

As soon as I joined NET-A-PORTER I was absorbed into the company Fantasy Football League by equal parts peer pressure and wanting to look cool. The first season took its toll. Forget lying in on a Saturday — I needed to triple-check my captain selection, I wouldn’t dare to take a holiday in case a player got injured while I was away, never mind the fear of forgetting about double-game weeks. After a respectable lower-middle-half-table finish, I needed a break — a long break.

The NAP Tech team consists of multiple sub-teams, so naturally there is some friendly competition; when a company-wide league was announced, I knew I had come out of retirement.

We have two main leagues: one strictly for NAP Tech; and NET-A-LIGA (a.k.a. big boy school), the company-wide league for people who know what they are doing.

If we were going to make this a real success, we had to amplify the rivalry and the potential for gloating — that is what this post is about.

Continue reading

Javascript

Assembler released

We just released Assembler – a plugin for Backbone that makes it easy to manage nested views.

Assembler was initially written to solve the need for rendering nested views server-side and re-attaching them client-side in a node.js/Backbone application. However, we also found it useful for quickly mocking up apps and prototypes as well, so we’ve decided to release it as a standalone library.

Continue reading