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.

Interview with Denis Fernandez

Denis Fernandez joined Tes in April 2015 as a front end software developer and currently works from Barcelona, Spain. He grew up in Havana, Cuba and went to Higher Design Institute where he graduated as a Graphic Designer. As if designing and creating amazing visual experiences for our digital education platform is not enough, Denis also plays the bass guitar and is a member of two metal bands. Below are a few questions we asked Denis to get to know him better!

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’.

Accelerated Mobile Pages

Accelerated Mobile Pages are normal stuff of the web in many respects - publicly reachable via a URL, viewable in any browser, built with HTML, CSS and Javascript. The difference is, they load almost instantly on mobile - music to the ears of anyone who's waited 10 seconds for a page to load over 3G (all of us, then). More information is on the AMP project website. The payoff if you make an AMP version of your page SEO - AMP pages can be served higher up Google search results, for example in the carousel of article stories that you sometimes see when googling for news.

Page load speed (part 2) - faster images

This is the second in a series of posts about improving page performance. Part 1 discussed what we're measuring and how. A video of me talking about the performance issues discussed in this post. The problem For the job details page, we accept banners supplied by schools which aren't compressed as well they could be. Large images don't block the rendering of the main content, however they hog bandwidth, especially on mobile.

Improving page load speed at Tes (part 1)

A video of me talking about the performance issues discussed in this post. How are we defining 'page load speed'? How quickly the user can see and interact with core page content after they navigate. Non-core content could be adverts, their user avatar, or recommended links. It's important they appear as quickly as possible but they're not the main reason the user navigated to the page. Where are the biggest gains to be made?

Secure file uploads with redux-plupload, ClamAV and S3

We have recently added a new feature that allows a user to upload a file from our webpage. We implemented this using redux-plupload, ClamAV and S3 to satisfy the following requirements: the file should be uploaded from the client to avoid excessive memory use on the server while streaming files. the upload must be secure and the file must be stored securely (and ideally encrypted at rest). the file should be virus free so that it can be downloaded without worry.

Building an isomorphic react application

As someone new to the javascript and nodejs community, being asked to build an isomorphic React application was quite daunting. To be honest, I didn’t really know what this would entail. However, I do like a challenge and this task certainly presented me with many of them. The first was to find out what an isomorphic application actually was. I’d come across React before (it’s a javascript web framework built by the team at Facebook) and was looking forward to using it again.

The things we trust to github

One of the issues of using public GitHub is that, well, it’s public. Even with the layers of security, it’s all your information ‘out there’. Somewhere. However, it is a fact of life that we all use GitHub and many large and small companies choose the hosted GitHub option over hosting an in-house, expensive GitHub Enterprise environment. The problem is that developers and operations folks sometimes push things into GitHub without thinking.

Stand Up Time! A Standing Desk in the Office

Much has been written about standing desks – from the gushingly positive to the crushingly negative. But following some back pain I’d had at the end of 2015, I thought I’d give it a go. After a little more than a month into the experiment, here’s the story so far. When I joined Tes in November of 2015, I had a normal desk chair setup. The chairs here are good – not as good as the Aero numbers that cosset your nether regions at some companies I’ve worked at - but nice enough.