As developers, we often come across HTTP/S and instantly think — shit, not certs again. This guide will hopefully keep that gap in knowledge each year to a minimum which subtle reminders and explanations to what each component of the certification process is, including creating your own certificate authority and signing your own certificate signing requests with your newly created CA.

I apologise if this article is a little confusing as you read through, but certificates are kind of hard to explain in some sequential orderly fashion. …


In this article we’ll cover the Java 8 Streams API and the new Optionals wrapper class.


The point of an Optional comes in two parts, utilising them for managing nullable values and utilising them for a lack of value presence, literally, no present value whatsoever is possible via Optionals. This might sound a little strange, but hopefully after a few code snippets you’ll come to see why they’re useful and also why maybe NOT to use them. …


TLDR; If you’re familiar with concepts of Threads and Pooling them, you can skip right over to the CompletableFuture’s section, as these are the most common tasks run nowadays and can run their own pool if you don’t want to use the default ForkJoinPool.commonPool

In this tutorial we will discuss all things concurrent in Java (in the package lol).

Firstly, let’s discuss what a thread is, in lament terms a thread is an execution sequence that ultimately will come to an end unless we instruct otherwise, by ‘blocking’ the thread somehow, whether this be with a while loop which never…


Lambdas bring a degree of simplicity to Java. Rather than being explicitly verbose at every corner, what if we could pass a functional expression similar to those find in other languages, such as JavaScript:

let n = (param1) => someOperation(param1);

Fortunately Java introduced this in Java 8 but it isn’t identical, we’ll look at making our own lambda in Java and cover the steps to do so.

Creating a Function Interface

Firstly, Java is static and therefore cannot magically infer some dynamic type to run against for a lambda. Instead, they’ve provided us interfaces which can be lambda[ised]:

Utilising a Lambda

Now we just need…


I'm just a self taught developer from England, honestly, that's it lol.

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