GOTO is a vendor independent international software development conference with more that 90 top speaker and 1300 attendees. The conference cover topics such as .Net, Java, Open Source, Agile, Architecture and Design, Web, Cloud, New Languages and Processes

Martin Thompson, Keynote Speaker, High-Performance Computing Specialist

Martin Thompson

Biography: Martin Thompson

Martin is a high-performance and low-latency specialist, with over two decades working with large scale transactional and big-data systems, in the automotive, gaming, financial, mobile, and content management domains. He believes in Mechanical Sympathy, which is applying an understanding of the hardware to the creation of software, being fundamental to delivering elegant high-performance solutions. Martin was the co-founder and CTO of LMAX, until he left to specialise in helping other people achieve great performance with their software. The Disruptor concurrent programming framework is just one example of what his mechanical sympathy has created.

Twitter: @mjpt777
Blog: Mechanical Sympathy
Video presentations: YOW! 2011: Martin Thompson - On Concurrent Programming and Concurrency Folklore

Presentation: How did we end up Here?

Time: Tuesday 09:30 - 10:30 / Location: Grand Ballroom A & B

Have you ever wondered how our software industry has got itself into the pickle it is currently in? Most projects end up being massively late, costing way more than expected, and delivering big balls of mud that no one truly understands and thus are a nightmare to maintain.

This talk will be a full scale rant, attacking the technology industry’s sacred cows by exposing the motivations that hide behind them. We’ll discuss how these motivations lead us into practices that hinder rather than help us deliver quality software, practices that often make our lives just plain miserable.

However, all is not doom and gloom. Some organisations seem to be achieving things that the traditional corporate IT departments can only dream of. What are they doing differently? We’ll explore this question and what we can learn from them.

Presentation: Designing for Performance

Time: Tuesday 17:10 - 18:00 / Location: Grand Ballroom A & B

What does it really mean to design software for high-performance? Performance is such a generic and misunderstood subject. In this talk the subject of performance will be explored. We will focus on what is means to achieve sufficient response times, throughput, and scalability. We will explore the difference between latency and response time and how our industry confuses both. We will also explore what it means to go parallel to increase throughput and achieve cost effective scalability.

Once the theory is out of the way we will dig into how modern hardware works and what we need to know about abstractions mapping to our software designs. These abstractions are the key to the models our code represents. The author has not meet many abstraction layers he did not enjoyed violating. There is a good reason for this. So many of our abstractions are leaky or just plain wrong.

We will finish off with describing how qualities of service such as performance can be incorporated in the development process to ensure there are no unpleasant surprises once we go into production. Oh and one last thing. If you design software for high-performance it does not become a mess of bit twiddling and compiler hacks. Good high-performance software is often some of the cleanest and most elegant software that is easy to maintain.

Workshop: Low Latency Communications

Time: Wednesday 09:00 - 16:00 / Location: Gleacher Center 1

In this all day workshop, join Martin and Todd as they highlight some of the problems and solutions involved in designing and implementing low latency communicating systems. They will use the Simple Binary Encoding (SBE) and the low latency messaging transport, Aeron, to illustrate the common protocols of interaction that can be of use to every developer.

You will learn how to:

(1) lay out data formats to take advantage of modern CPU hardware

(2) use Simple Binary Encoding (SBE) to quickly and efficiently format complex data that can evolve

(3) learn what is involved in designing protocols of interaction

(4) use Aeron to stitch together complex systems efficiently

(5) learn how best to benchmark communicating systems