How Covid-19 Got The UK To Put Down Their Smartphones

Smartphones were first introduced to the public back in 2007. Since the first shiny iPhone hit the UK shelves there has been a steady increase in people accessing the internet on these devices. On the flip side, people have been accessing the internet less and less through desktop devices.

The graph below shows this trend.

 

 

Mobile access the internet soared and made history in October 2019. For the first time, in the UK, more people were browsing online using their mobile than on their desktop. This reached an all-time high in the UK in April 2020 with 53.97% of people browsing the internet on mobile vs desktop. 

This, however, didn’t last for long. On the other side of the world, something was brewing that would change the behaviour of internet users all over the UK. Covid-19 caused the UK to go into lockdown at the end of March. Suddenly the majority of the UK was working from home so there was no more commuting. The roads were quiet, the trains and buses rattled along with no passengers and cities became ghost towns. People were no longer able to roam the streets so no longer needed roaming data. By July 2020 internet usage on smartphones had slumped to 48.25% and desktop had overtaken mobile once again.

 

 

There are many reasons why more people were now back on their desktops. People were no longer playing candy crush on their morning commute, no longer using google maps to find a new restaurant while out and about. There was no more checking in at airports to let their friends know they’re on their way to Alicante. 

Most of the people in the UK were now confined to their house. Office workers now worked from their kitchen tables, bedrooms became boardrooms and users were spending more time online on their desktops. Even though people were working on their desktops from home they would normally be doing this anyway except in the office. So what could be influencing this change in behaviour?

Well, if you’re anything like me, when I get home from work and I want to do some online shopping or watch a quick youtube video I can’t be bothered to get my laptop out of its case and wait for it to start up. However, if my laptop is already out and switched on I’d be much more likely to hop on that to browse online. This behaviour change could be driving the increase in desktop usage. Another factor could be that people who didn’t previously own a desktop now had a work computer that they were able to access any time from home.

In a survey MarketingWeek conducted with over 3,000 members of the Influencer community, 41% of respondents answered that they were “currently shopping online for things they would normally shop for in-store.” As this was an unfamiliar experience to these people they may have wanted to use a laptop for what to them was a more complex experience. 

But before you go throwing away your mobile-optimised websites current usage, as the UK opens up, data shows mobile and desktop usage is 50/50 with an upward trend for mobile. While desktop usage was higher than mobile in July mobile usage for July was still up on the year before from 46.48% in 2019 to 48.25% so was up by 1.77% on the year before.

With people switching from desktop to mobile and vice versa there’s an evergrowing need to seamlessly combine the two experiences. Apple had begun this continuity with ‘Handoff’ which allows users to start one task on their mobile and finish it on their desktop. Currently, this is supported in a range of applications such as Mail, Maps, Safari, Calendar, and a growing list of third-party apps. This is built into the operating system of Apple devices. Chrome offers tab syncing and Windows has ‘Continue on PC’ which is device agnostic but does require installation. 

There are other options out there. Take eclipse’s AR solution ARES for example. It’s great viewing a 3D model of a product on a desktop browser but the experience comes to life when it is seen through the lens of a mobile camera in your surroundings. This requires users to switch to a mobile device and how that transition is handled is becoming increasingly important. With ARES you can scan an on-screen QR code with your mobile and that will take you to the augmented reality view of the product. This is where you will be able to see the product in your home.

As the UK comes out of lockdown smartphones are being put to use in new ways. Such as, scanning QR codes to check-in at restaurants for track and trace and to view the menu at bars where paper ones have been scrapped. Now more than ever your business needs to be adaptive to these changes and your website ready for anything. Drop us a line if you’d like a little help – we’d love to talk to you.


Website Speed Tips

6 Tips to Increase Your Website Page Speed - Part 2

Looking to get a better page speed on your website? Look no further...these tips will get you moving.

This is part 2 of a two part series, read part 1 here.

Upgrade your server to HTTP/2

HTTP/2 has been a long time coming, for too long we’ve been building on top of a legacy protocol, this means a lot of our techniques have been put in place because we’re working with HTTP/1.

One of the many benefits of HTTP/2 is that we can now download assets in a much more fluid way, HTTP/1 forced us to download assets in batches, this was useful to keep connections open but meant we’d wait for the largest file to finish before we could move onto the next batch.

HTTP/2 has done away with this meaning that we can now download assets as soon as we finish any other asset currently being downloaded, this means that techniques like concatenation of files and turning images into sprites are now not best practices and should be avoided, favouring more smaller files which can be downloaded and displayed to the user as and when they get delivered.

HTTP/2 does have some requirements, one of which being browser support, the other being that it must be used in conjunction with a valid certificate. Both of which aren’t a problem to get over to help you reap the rewards of HTTP/2.

HTTP/2 has other huge benefits, Daniel Stenberg has written http2 explained if you’d like to dive in deeper.

Optimise for the critical render path

If you’ve use Google Page Speed Insights, you’ve seen this phrase. This is a much more complicated challenge than anything else we’ve discussed so far, but I’ll outline what we’re trying to achieve here.

The critical render path defines the assets required for the browser to do it’s first render, this means everything the browser first sees when scanning the initial HTML that’s delivered. The challenge of optimising the critical render path is all about prioritising your assets to get that first render as quick as possible.

This means we may want to delay our JavaScript completely, we may even want to delay a large section of our CSS and only focus on what the user can see which, if they are on mobile, could be as little as the header and some initial content. The goal here is to try and make our critical render path so small, that even on a very slow network, we could get for that ever ideal goal of our first render happening in under 1 second.

The reason this is a more complicated solution than anything we’ve discussed previously is that after we’ve delayed all those assets we then need to pull them in in a way that isn’t jarring for the user and doesn’t impact the rest of their experience. We still need all these assets delivered quickly and giving to the user without them noticing.

Ilya Igrigorik has done amazing work on the critical render path and you can see his video here.

Increase your perceived web performance

Okay, so this isn’t going to make your website faster on any metric, but it can have just as much impact on your user experience.

Perceived web performance is all about how fast your website feels as opposed to how fast it actually is.

There are a few accepted ways of increasing your perceived web performance:

Sleight of hand

I call this Sleight of hand because it works similar to how a street magician can steal your watch, we are essentially distracting the user while we load the assets to the website. The most simple way of doing this would be adding in some animation while loading in a new section of the website, if our animation takes 2 seconds and it takes us 1 second to load in the new thing, the user may not even realise it’s taken any time before they can interact with the new part of the website. If this seems pointless to you, the web already uses this a lot and you’re probably not even noticing it.

Skeletons

This is a technique that is heavily used by social media website such as Facebook, Twitter and Instagram, the technique here is basically just loading in something that looks like the asset the user is trying to get at. In the case of Facebook, who use this heavily on your timeline, it’s a dummy post, your brain is already expecting to see a post so by seeing this skeleton in place, your head is already partly accepting the fact that the page is loaded. This is really effective and although has no increase to the actual page speed, it can increase your conversion rate massively.

Keep ‘em busy

This should be saved for when we’ve got a long wait that we can’t speed up for some reason, give the user something to do. The gaming industry will often give users a mini game to play while they load the main game. This could be a simple version of what they’re going to be playing or a tutorial. We could just give the user some information, if we’re a holidays website, we could display the weather while we’re doing some heavy processes that can’t be sped up for example.

Everything I’ve said about are all web performance techniques that actually work, I’ve implemented them, I’ve seen the results and I can vouch for them.

I’d love to hear your stories implementing some of these results, equally, I’d love to hear some of your web performance techniques that do or don’t work, so please reach out in the comments.


Getting directions with Google Maps API

How to Get Directions with the Google Maps API

This blog post offers a simple solution to providing a ‘get directions’ feature on your website.

I recently had the task of getting the directions from the current user’s location, to the location of a store, as part of an eCommerce project. For this particular application, I was working on the SAP Hybris platform but the process should be the same for any of the main platforms such as Shopify Plus, Magento, BigCommerce etc.

I found the documentation on Google Maps to be a lot more convoluted than necessary. The directions in the documentation explain that you need to use the `DirectionsService` that google maps provide as part of the API, as found in this example.

This is not the case, although you will still need the location in which you would like to direct the user (i.e. the latitude/longitude, or the name of the place).

Assuming you wish to set the start location as the user’s current location, you can achieve this by simply using this endpoint,

<a href="https://www.google.com/maps/dir//{latitude},{longitude}"> Get directions </a>.

There is also an opportunity here to set various rules on how the directions should be set, such as the mode of transport, the travel time, waypoints, and much more. All of these options can be found here.  But, to save you the click, here they are;

{  origin: LatLng | String | google.maps.Place, // where you will begin  destination: LatLng | String | google.maps.Place, // where you will end up  travelMode: TravelMode, //driving, train, boat, transit etc  transitOptions: TransitOptions, // only applies if travelMode is provided  drivingOptions: DrivingOptions, //you can set the departure, and pessimistic or optimistic driving coniditons  unitSystem: UnitSystem, // metric or (the archaic) imperial  waypoints[]: DirectionsWaypoint, // places to stop off on the way  optimizeWaypoints: Boolean, //when true, it chooses the shortest route  provideRouteAlternatives: Boolean, // when true, gives more than one way to get to the destination  avoidFerries: Boolean,   avoidHighways: Boolean,  avoidTolls: Boolean,  region: String}

TLDR;

<a href="https://www.google.com/maps/dir//{latitude},{longitude}"> Get directions </a>

Note: the two  `//` after `dir` are required, as otherwise it will assume you are setting the starting location.


Website Speed Tips

6 Tips to Increase Your Website Page Speed - Part 1

As anybody who knows me will tell you, I’m a huge self-confessed web performance geek, I love websites that download fast, I believe that fast internet is a basic human right and I think hotels that claim to have WiFi but instead have LiFi (WiFi that doesn’t quite seem to download anything) are criminal and should be boycotted.

This means that I’m always on the hunt for a good website performance technique and I thought I’d share 6 of the best web performance techniques that work every time.

Reduce the size of your images

The most commonly overlooked technique to get a faster website, can not only give you some of the biggest rewards but it’s also the easiest technique to implement.

There are a few areas in which you can reduce the size of your images:

Reducing the aspect ratio
This sounds very obvious but a huge amount of websites I’ve optimised and found that their main banner at the top of every page is 5000 pixels wide but is being displayed at 20% that. Just by reducing that you can save yourself a huge amount of bytes and therefore save your users from a huge download for no real benefit.

Make sure you’re showing the right image for the device
If your customer is viewing your product on their mobile, show them a version of the image that’s no wider than the device. When CSS is used to reduce the size of an image, it’s still the same size to download, just the browser then has to process it to the size required by the CSS, adding more time. Consider looking into srcset which is becoming more widely supported.

Compress the image

Tools like TinyPNGTinyJPG and ImageOptim can save your users from many kilobytes of download without reducing the visual of your image in any way your users will notice. This means that you can save a large amount of bytes on your page, without actually impacting your users. If you can have this built into your media upload, you don’t even need to think about it.

Reduce the ‘quality’ of the image

By reducing the quality of our images, we’re really talking about simplifying the amount of colours being used. This means that we can not only reduce the file size but also making tools like Gzip more effective. Other more advanced techniques of this include reducing the quality significantly to the point where you can see but saving the image at double the resolution, this has been proven to deliver even smaller file sizes without impacting the asset visually.

Remove old and unneeded code

Technical debt is an unavoidable part of any development, making sure you go through and remove old CSS, HTML and JavaScript is hugely important, though.

A few common areas that get overlooked regularly:

Removing vendor files

Pulled out an old version of a carousel or a split testing tool, make sure to pull out the assets as well, that includes the JS and CSS that goes with it.

Removing losing variants of split tests

Very often I’ve seen examples where 2 or more versions of the same element have been created and tested. After this has been analysed and a winner decided, the traffic is pushed down one stream to the winning variant only for the old versions to be forgotten about. Make sure to remove any old code associated with the losing variants of the split test.

Not including the entire framework

This is the most common cause of removing unneeded code, when people include frameworks like Bootstrap or Zurb, they very often include the entire framework, this means all the JS and CSS that build elements that the website might never even use. You can build these files up as and when you need them by not including the unneeded Sass files or only downloading part of the JS. For instance, the entire bootstrap CSS and JS is 668KB whereas the bootstrap grid is just using the grid is 13KB. You can use the customize tool on the Bootstrap website to do this for yourself and tailor the download to your needs.

Prioritise your assets

This is equally as important as anything else, make sure you’re downloading your assets as and when you need them. The simplest case of this is making sure to put your CSS in the head of your file and the JS in the bottom.

Even more than this though we can look at preloading pages and lazy loading.

Preloading

Preloading is when you download an asset before the user requires it and store it in cache or local storage, this means when they get to the area of your website where you think they might need it it’s already available and you don’t have to download it. A good example of when this could work is if you have a booking flow on your website, your booking flow will probably have some extra functionality, so before the user clicks on the search button on your booking engine, you could preload some of this functionality meaning you can load the page quicker and hopefully convert that user.

Lazy loading

Lazy loading is the other side of this, delaying your assets on the page the user is currently looking at until they actually need them. If for instance, you’ve got a gallery on your page, you don’t need to load all of the images the moment the user lands on the page. A more optimal way of doing this would be to download nothing at first, this allows for the first render to happen. Once we’ve displayed the page we download the first couple of images, and maintain being 1 or 2 images ahead of the image in view. This means you’re not downloading images that your user might not ever see but still make your users feel everything is instant as they slide through your gallery.

This is part 1 of a two part series, read part 2 here.

Everything I’ve said about are all web performance techniques that actually work, I’ve implemented them, I’ve seen the results and I can vouch for them.

I’d love to hear your stories implementing some of these results, equally, I’d love to hear some of your web performance techniques that do or don’t work, so please reach out in the comments.


Universal Javascript

Tackling Universal Javascript

Tackling Universal Javascript - the benefits of server and client-side rendering

What is Universal Javascript?

Simply put, ‘Universal Javascript’ is javascript that is capable of running on both the browser and the server, but also on native devices, embedded systems and more.

It’s also referred to as ‘Isomorphic Javascript’ as there is some confusion regarding what ‘universal’ and ‘isomorphic’ mean in the context of Javascript. It was decided by community leaders, that, in fact, it’s best to call it Universal.

So, now we’ve cleared that up, let us move on.

Why Universal Javascript?

The reason the decision was made to use Javascript say instead of say C#, PHP, or any other popular server-side language is because javascript allows the junior members of our team (including me) to use our front-end skills in a more productive way. This grants us the ability to be introduced to powerful concepts such as REST, and HTTP, without the added mental stress of learning a whole new language, abstracting away from the language itself and focusing on the concepts behind what’s happening on the client, and the server.

It’s a great environment to develop and nurture both front-end and back-end skills, and removes the necessity of context-switching, leaving us to think about the important parts of our application rather than the implementation details, and stressing over semi-colons.

Furthermore, another selling point of universal JavaScript is the fact that it runs on every device. iPads, iPhones, Android, Raspberry Pi’s...  whilst, PHP for example, can not. This, I believe, gives Javascript a unique ‘future-proofed’ status among programming languages, as it provides us the freedoms of using experimental javascript and device features without being limited by the browser, allowing us to create cutting-edge solutions for our clients, as the language evolves. Also, given that Universal Javascript is in it’s relative infancy; it has some huge industry backers. These include NetflixAirbnb to name a few.

Universal Javascript also gives us the added benefit of a substantial performance boost. The templates created in our components can be rendered on the server; and plain HTML can be sent the client. This benefits the user greatly; as it will provide them with a viewable media faster, without relying on fast loading speeds, location, device speed or any other of the factors regarding the user's experience outside of our testing environments. This, in turn, reduces the bounce back rate, providing more conversions for marketers. More benefits include ‘perceived speed’, which is where the user thinks your site is faster than it actually is; this can be achieved by critical CSS rendering; which is where the ‘above the fold’ content is rendered as quickly as possible, which in turn gives the user the content that they want, faster.

Universal Javascript also offers SEO benefits. One of the biggest disadvantages to building a Single Page Application (SPA), is the fact that it’s all rendered on the client. What does this mean? Well, this means that google's, bing's, and yahoo's’ webpage crawlers aren’t able to interpret client side code; because they crawl the server pages. However, with Universal Javascript, these pages can be pre-rendered on the server, giving accurate content to the crawlers.