here's my book
Here's a curated list of interesting talks I've delivered at software conferences. Slides available on Slideshare
Performance from Predictability
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
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
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
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:
- Describing how the CPU caches work in the latest Intel Hardware.
- Showing people what and how to measure in order to understand the caching behaviour of their software.
- Giving examples of how this affects Java Program performance and what can be done to address things.
- Talking about what future versions of Java may do to help.
Lambda Expressions: Myths and Mistakes
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 these opinions just myths?
- What mistakes does a developer make?
- Can a ‘blue collar’ Java Developer cope with functional programming?
- Can we avoid these mistakes in future?
Are you better than a Coin Toss?
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?