Insightful Logic


The technical ramblings of Richard Warburton

    Introduction to Testing in Java Published

    A brief outline of my first course on Pluralsight


    Agrona's Threadsafe Offheap Buffers

    This blog post continues my ongoing series on the Agrona library by explaining how we offer easy access to offheap memory for threadsafe operations.


    Agrona Event Counters

    The Agrona library provides a bunch of useful utilities, including event counters.


    Readable code is code that looks like the problem statement

    In this blog post I'll be explaining why I think that no matter what programming language you're using Readable code is code that looks like the problem statement.


    Given When Then in Java

    tl;dr you can use labels to clarify a given-when-then style of testing.


    Lambda Behave (Java Testing Framework) 0.3 Released

    Lambda Behave 0.3 release notes.


    Java Debuggers and Timeouts

    How to use your debugger in the presence of timeouts in your code.


    Lambda Behave 0.2 Released

    Lambda Behave 0.2 adds a host of improvements including automatic testcase generation.


    Too Fast, Too Megamorphic: what influences method call performance in Java?

    Factors that influence method invocation performance.


    An open source JVM Sampling Profiler

    An open source profiler without a safepoint sampling bias. Please contribute!


    Date and Time in Java SE 8

    The article for date and time in Java 8 that I wrote for


    How to grow the speakers in your technical community

    Practices that the London Java Community uses to grow the speaking talent in their technical community.


    The Resurgence of Apache and the Rise of Eclipse

    Apache is no longer the place projects go to die and eclipse is expanding from just IDEs.


    Caching In: Understand, Measure and Use your CPU Cache more effectively

    Slides from my Javaone talk on CPU Caching


    Javaone 2013 Review

    I attended Javaone again this year. It was fun.


    Performance tests for slow networks with tc

    This post explains a simple way to replicate slow network conditions using the linux command tc. This makes it easier to performance test 2G or slow 3G smartphone connections.


    Testing Java 8 in 3 Easy Steps

    We all remember that when Java 7 shipped it had a series of quite severe bugs. We can all help with avoiding the same issue cropping up in Java 8. This post covers using your existing Continuous Integration to run your tests on Java 8.


    Garbage Collection in Java (4) - Garbage First

    The G1 collector is the latest collector to be implemented in the hotspot JVM. Its been a supported collector ever since Java 7 Update 4. Its also been publicly stated by the Oracle GC Team that their hope for low pause GC is a fully realised G1. Here's how it works.


    Geecon 2013 was great

    Last week I visited Krakow for the Geecon (pronounced


    Garbage Collection in Java (3) - Concurrent Mark Sweep

    Part 3 of the GC Blog Post covers the Concurrent-Mark-Sweep collector which is a low pause collector implemented in the hotspot Garbage Collector.


    Hilights of DevoxxUK 2013

    Last week the first ever


    Garbage Collection in Java (2) - Parallel GC

    How Parallel Garbage Collection, a commonly used GC approach in recent Hotspot JVM releases, works and is implemented in hotspot.


    Garbage Collection in Java (1) - Heap Overview

    This is the first in a series of posts about Garbage Collection (GC). This post just explains what garbage collection is and elements common to different collectors.


    How we do sprint retrospectives

    How we do sprint retrospectives at jclarity.


    Slab: guaranteed heap alignment on the JVM

    An experimental library with sequential guarantees about how it lays out the memory of objects allocated via it.


    When random numbers go One

    Sometimes it turns out that random numbers aren't so random after all.


    Date and Time in Java 8 (2)

    Part 2 of Date and Time covers Timezones and Offsets.


    Date and Time in Java 8 (1)

    One of the exciting new features coming up in Java 8 is a new date and time library, which is defined by JSR 310. This is the first of a 5 part series on it.


    Are all Map Functions the same?

    What the hell is map, and is it always the same thing? This post talks about how map is implemented in Haskell, Java 8, F# and Scala and what the differences tell us about the different languages themselves.


    Why /you/ should talk at conferences

    An attempt to encourage more people to speak at conferences. Summarises conferences I've attended over the previous year and discusses the differences between academic and industrial conferences.


    Lambdas: coming to a Java 8 near you!

    A brief introduction to the lambda expressions, proposed for inclusion into Java 8.


    5 Reasons to use Guava


    Guava's EventBus - Simple Publisher/Subscriber

    Eventbus is a simple publisher/subscriber api included within Google's guava. Its designed to help decoupling inside applications. We give a simple example of the api by using it to make a multi-user chat system.


    Multiple Inheritance and Traits in Java

    The Java programming language allows classes to inherit from multiple interfaces.
    That is to say that they can be multiple different types of things.
    What this project does is allow you to inherit from multiple implementations.