Here's a curated list of interesting talks I've delivered at software conferences. Slides available on Slideshare

Pragmatic Functional Refactoring with Java 8

Presented with Raoul Urma At:

You may be hearing a lot of buzz around functional programming. For example, Java 8 recently introduced new features (lambda expressions and method references) and APIs (Streams, Optional and CompletableFutures) inspired from functional ideas such as first-class functions, composition and immutability.

However, what does this mean for my existing codebase?

In this talk we show how you can refactor your traditional object-oriented Java to using FP features and APIs from Java 8 in a beneficial manner.

We will discuss:

Performance from Predictability

Presented At:

These days fast code needs to operate in harmony with its environment. At the deepest level, this means working well with hardware: RAM, disks, and SSDs. A unifying theme is treating memory access patterns in a uniform and predictable way that is sympathetic to the underlying hardware. For example, writing to and reading from RAM and hard disks can be significantly sped up by operating sequentially on the device rather than randomly accessing the data. This session covers why access patterns are important, what kinds of speed gains you can get, and how you can write simple high-level code that works well with these kinds of patterns.

Twins: OOP and FP

Presented At:

Object-Oriented Programming has well established design principles, such as SOLID. For many developers architecture and functional programming are at odds with each other: they don’t know how their existing tricks of the trade convert into functional design. This problem becomes worse as hybrid languages such as Scala, Java 8 and Ruby become common. I will talk about how functional programming helps you implement the SOLID principles, and how a functional mindset can actually help you achieve the holy grail of OO, encapsulation.

The Bleeding Edge

Presented with Martijn Verburg At:

Enterprise Java developers value reliability and stability, but what happens to your technology stack if you’re willing to take a risk? At jClarity we’re running production systems using Html 5, Angular.js, vertx, Mongo, groovy and deploying using chef. Its been an interesting ride: some things worked really well and some things don’t.

Come along and find out what we’d recommend and what we’d avoid with hindsight. We’ll also talk about how we ended up with such a diverse stack and how to make technology choices in a fairer way. We’ve made the mistakes so you don’t have to.

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

Presented At:

Modern computationally intensive tasks are rarely bottlenecked on the absolute performance of your processor cores, the real bottleneck in 2013 is getting data out of memory. CPU Caches are designed to alleviate the difference in performance between CPU Core Clockspeed and main memory clockspeed, but developers rarely understand how this interaction works or how to measure or tune their application accordingly.

This Talk solves that by:

  1. Describing how the CPU caches work in the latest Intel Hardware.
  2. Showing people what and how to measure in order to understand the caching behaviour of their software.
  3. Giving examples of how this affects Java Program performance and what can be done to address things.
  4. Talking about what future versions of Java may do to help.

Lambda Expressions: Myths and Mistakes

Presented At:

tl;dr - How will the everyday developer cope with Java 8’s Language changes?

Java 8 will ship with a powerful new abstraction - Lambda Expressions (aka Closures) and a completely retooled set of Collections libraries. In addition interfaces have changed through the addition of default and static methods. The ongoing debate as to whether Java should include such language changes has resulted in many vocal opinions being espoused. Sadly few of these opinions have been backed up by practical experimentation and experience.

Are you better than a Coin Toss?

Presented with John Oliver At:

So you’re a big data and distributed systems “expert”, you’ve collected 500 billion data points, thrown it into sci-lib-of-the-week, you’re using Hadoop, backing onto those cool AWS GPU instances, let it grind away for days and its spit out the answer to life the universe and everything. But is it really better than a coin toss?

How do you validate whether your data analysis algorithm works? Are you learning a solution to your problems or just the data you already have? What problems can you encounter when analysing your data? How do you solve them, and what can you do easily under the time pressures of a business environment?