Aligning Divs and Devs: getting a consistent front-end

Imagine discovering your house had subtly changed every time you came home. The cupboard doors open different ways. The light-switches control different lights, and the hot and cold taps in your kitchen swap places. The inconsistency would be maddening – and the same goes for apps and websites. Creating a consistent UI keeps your users sane and orientated. For any product where there are multiple developers, the ideal solution is a shared set of common elements and styles, but this is not simple to achieve.

Read more...

Quick, clean commits with partial linting

Tired of your commits taking >10 seconds? Give this a bash. Linting is great, but no one likes slow commits! At Tes, we use husky to run code when the git precommit hook triggers. Most often, we run npm run lint so that we can catch linting errors before they’re even committed. (We use ESLint for linting.) The problem is that, even when you’re developing microservices, it could take quite a while to lint all the files in your repository.

Read more...

Becoming a Next-Level Developer: a Ladies of Code Meetup

A few days before International Women’s Day, Tes hosted the Ladies of Code Meetup group for an evening of talks, networking and community. Three speakers gave advice on how to become a ‘next-level developer’: how to advance your career, become a ‘superhero’ and negotiate your salary effectively in the context of the gender pay gap. While the event was aimed at women, there was sound advice for engineers of any gender.

Read more...

Instrumenting and Observing Microservices Part 2: Are your microservices working together?

If you want to be confident that your users are able to achieve their goals using your service there’s more to do than monitoring the health of individual microservices. You need assurance that your set of microservices are working well together, and when they aren’t, you need the information necessary to fix any problems as soon as you can. This blog follows one Tes team’s mission to better identify and diagnose problems, enabling them to move fast and ship with confidence.

Read more...

Instrumenting and Observing Microservices Part 1: What do you expect from your microservice?

A friend of mine tells a great story of a team avoiding a great deal of grief. All of their system health checks were green, but the live graph of purchases dropped to zero and stayed there. Despite the many positive system indicators, the team were able to see they had a problem and were able able to react quickly to find and to fix it. It turned out that user purchases was a key indicator of success.

Read more...

TES Hack Days

Hack days are an interesting idea based on the 15% time from 3M in 1948. The fundamental goal for hack days is to empower engineers to solve problems that they see however they want to. Without the day-to-day delivery pressure they can solve problems that other people don’t even realize they have or in ways that are incredibly creative.

Read more...

Outage on 25th April - the impact of a misconfigured redis server

On Tuesday evening, post the launch of the new home page, we had a second set of performance problems that impacted the entire tes.com site around 6pm for 40 minutes, and then subsequently during two periods at 9pm and 12am. The root cause turned out to be a misconfigured Redis caching server that was moved to in response to the issues on the 24th of April. During the post-mortem of the issues the day before we had agreed that a key action was to upgrade and improve the monitoring of the part of our platform that does the composition of the shared fragments (e.g.

Read more...

Outage on 24th April - how one inefficient piece of code impacted tes.com

We had a number of site related performance issues on Monday 24th April that impacted the entirety of tes.com. The fix to which (as always) was deceptively simple, and resulted in response times on average dropping from 100ms to 10ms, and CPU usage on the server reduce by almost 400%. As part of the rebrand we have been rebuilding the services that supply shared assets to all parts of our platform, which include core styles, images and the fragments of HTML for the masthead, footer and left hand navigation rail.

Read more...

Debugging with the MongoDB oplog

Debugging allows us developers to assume the role of detective, and like any good detective, we need to consult all of our sources to understand what’s going on. If your application uses MongoDB for persistence, one source you have available is the oplog. What is the oplog? The MongoDB oplog, or operations log, is a standard capped MongoDB collection. Each document in the collection is a record of a write operation (a delete, update or insertion) that has resulted in data being changed.

Read more...

React, or no framework?

This post is personal opinion rather than representative of the Tes development team in general. If you asked three other developers at Tes you’ll most likely get three different answers (and maybe three more blog posts after this one!). React has been the JavaScript framework of choice at Tes for the last couple of years, recently paired with Redux. Dozens of apps have been built in a variety of styles. Opinion across the whole development team has varied, from ‘Reactify the world’ to ‘use only if strictly necessary’.

Read more...