Ben Deane

  • Intel

Ben has been programming in C++ for this whole millennium. He spent just over 20 years in the games industry working for companies like EA and Blizzard; many of the games he worked on used to be fondly remembered but now he’s accepted that they are probably mostly forgotten. After getting more interested in modern C++, in the teens he started giving internal company talks and then talks at various conferences, spreading ideas about types, algorithms and declarative and functional techniques.

In 2018 he left the games industry and worked in finance for a short spell, writing high-frequency trading platforms using the most modern C++ that compilers could support. Now he is a Principal Engineer at Intel where he puts monads inside your CPU.

Sessions

  • Plato, Magritte, Sartre & Carroll

    Beginner
    Intermediate
    Advanced

    How do we design code? What kinds of things must we balance? Efficiency? Ease of use? Domain sympathy? Simplicity of concepts? Naming? I could go on... what's clear though, is that design of code is an important activity worth considering separately from implementation. Anyone can use a language to get the immediate job done. But to make the code well-designed -- a joy to use, whether it's today or years from now -- that's another matter. In this talk we'll take inspiration from some of the great thinkers of the past and explore what their ideas might mean in software […]

  • Declarative Style Evolved

    Beginner
    Intermediate
    Advanced
    API Design

    • If it compiles, it should be correct. • It should be easy to use and change. • It should run fast enough. • It should be testable. I'm sure we could all extend this wish list indefinitely with desirable properties of code. The question is, how to do we apply this beyond small areas of local concern? How can we deal with the complexities of common cross-cutting concerns like IO, networking, concurrency, logging, handling time, or dealing with hardware quirks? How can we write code and enable our teams to write code that really achieves zero-cost abstraction at the […]

  • Embedded Asynchronous Abstraction

    Intermediate
    Advanced
    Embedded

    You've probably heard about senders and receivers. They're this new (actually old, but new to C++) abstraction for asynchronous work. People who work on them tend to be concerned with large-scale heterogeneous computing: parallel algorithms for doing "AI" and such. But if you're working in embedded or constrained systems, and you want abstraction, what do you do? You have concurrency problems in spades since you're basically event-driven by interrupts happening whenever. Can you use senders and receivers make this situation amenable to reason with zero abstraction cost? This talk answers that question, and more. We'll talk about the nitty-gritty of […]

  • Calendrical C++: std::chrono, History, Mathematics and the Computus

    Beginner
    Intermediate
    Advanced
    Math/Analysis

    Our job as programmers is to solve real-world problems with appropriate abstractions. The real world is messy, and few things are messier than dealing with calendars. It has been claimed -- without too much exaggeration -- that most mathematical progress before the 1600s was driven by trying to figure out when Easter falls. This talk combines C++, history, and the process of finding abstractions for this interesting and simplification-resistant problem. Attendees will learn plenty about the proper usage of std::chrono constructs, gain an insight into why calendars are so complex and how to find the right ways to express things […]

  • Applicative

    Intermediate
    Advanced
    API Design

    Monads get all the press. Functors are often presented as a prerequisite to monads. Applicative (functor) almost never gets mentioned. But it's massively useful - to the point where a lot of the time when we think about a "monadic interface" what we really want is an applicative interface. This talk will put applicative in the limelight, showing how it works and why it's so powerful, with lots of examples grounded in code; there are no category theory diagrams in this talk. Attendees will come away with a solid understanding of the applicative pattern and its many uses. And as […]