Linked lists for the busy engineer

Obligatory photo from Unsplash

Audience

This article can be read by any engineer, even those without any knowledge of Linked Lists. However, I would say it will be most useful to those with at least a fleeting understanding, and can act as a refresher on the main points.

Argument

As opposed to Trees, which are a hierarchical data structure, Linked Lists are linear. There are two types of Linked List: singly linked lists and doubly linked lists.


Types of performance testing and how to use them!

Ensuring modern web applications remain performant

Audience

In this article we will be discussing the different ways we can test the performance of a contemporary web application.

Performance testing ensures the scalability, stability and reliability of your web services. We will discuss why we test, the types of testing, then conclude with a simple API test using Gatling, a popular performance testing framework.

Argument

What problem is performance testing trying to solve? …


Giving you direction with maps, keeping you informed with dictionaries

Oh, the places you’ll go…

Audience

This article is aimed at developers hoping to revise maps and dictionaries. It will help you get the gist if you’re a total beginner, but it’s more targeted at engineers hoping to dig deeper!

Argument

Hash Tables organise data using hash functions to support quick insertion and search. There are two types of hash table: hash set and hash map.

  • Hash Set: A set of unique values.
  • Hash Map: An implementation of map, which stores a set of unique keys, mapping to values.

Hash Tables map keys to buckets. We use…


Trie, Trie, Trie again!

Dictionaries, a common trie application

Audience

This article is aimed at developers with a working knowledge of trees (you can swot up on my article here). It gives a quick overview of tries and their applications, then concludes with a worked example of a tries-orientated problem.

Argument

Tries are a type of tree data structure, it contains nodes, edges, a root, and parent-child relationships. However, a trie acts as a key-value data store. The key is always a string, but the value can be anything. In fact, the value can be nothing at all! …


General Trees, Binary Trees, AVL Trees, Red-Black Trees…

Trees in all their glorious shapes and sizes

Audience

This article is aimed at developers with a little prior experience of trees, but who are looking to brush up. It assumes some existing knowledge of Java, as that is the implementation language we will be using, but even those with only a fleeting familiarity should be able to follow along!

This may be a bit of a longer article, as we will dive into implementations of some of the tree types, however you can skip those bits if you just want to get the gist.

Argument

I find trees are best described…


Creating an amazing space for audience participation!

An introduction to moderation at the BBC

At the BBC, we put audiences at the heart of everything we do, so it’s important they feel they have a safe space to interact with all of our online products. Whether it’s a child uploading a picture for their favourite CBBC show, or an avid fan of current affairs sharing their thoughts on the latest breaking news story, the BBC is built to give a voice to everybody.

At the core of this is moderation. As text, pictures, videos and audio are submitted by the public to the BBC, we need to…


Automated container deployment, scaling, and management

Containers for the masses

Audience

This article is aimed at developers with a basic knowledge of Java and Docker looking to understand how Kubernetes fits into contemporary software development.

We will aim to cover containerisation, container management and the basics of Kubernetes, finishing off with a worked example using AWS’ Elastic Kubernetes Service (EKS).

Argument

In Software Engineering we have code and we need somewhere to run it. Sometimes this will be on our local machines, sometimes a server, perhaps somewhere else. However, we need to make sure wherever we run it, it runs in the same way. …


An introduction to Kinesis using Apache Camel and Spring Cloud Stream

Streaming and its integration with Spring

Audience

This article is aimed at developers with a reasonable understanding of Java and Spring, but no experience whatsoever with AWS Kinesis, Apache Camel or Spring Cloud Stream. It will explain the role of message brokers, introduce Kinesis and conclude with a worked example based on Twitter data.

Argument

Message Brokers

Message brokers act as an intermediate between a data producer and a data consumer, responsible for routing, validating and transforming their input.

The benefits of using a message broker are decoupling the producer and consumer, maintaining a queue, providing reliable storage, managing the transactions and guaranteeing the message delivery.


An introduction to caching principles

Increasing application speed using caches

Audience

This article is aimed at developers with a reasonable understanding of how the internet functions, contemporary application architectures and AWS.

It will cover what caching is in a more general sense, the motivation behind using it, and then deep dive into specific implementations.

Argument

A cache stores previously used or computed data in a high-speed data store to make it more rapidly available than in the main storage layer. Generally we would use hardware such as RAM.

For example, we may have a preferred takeaway saved as a favourite on a delivery app. Rather than search…


What can Spring do to help me secure my application?

Adding a security layer to Spring projects

Audience

This article is aimed at developers with a solid understanding of the basics of Spring and web security. It marries up the two concepts, concluding with a worked example of using Spring Security with Spring Boot.

Argument

Spring Security is centred round two core concepts:

  1. Authentication: Verifying you are who you say you are.
  2. Authorisation: Once we know who you are, what are you allowed to do?

Authentication

Authentication is handled by the AuthenticationManager interface:

public interface AuthenticationManager {  Authentication authenticate(Authentication authentication)
throws AuthenticationException;
}

This can be implemented differently depending on…

James Collerton

Senior Software Engineer at the BBC

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store