About this site

I don't update this site very often. It's primarily used to publish talks and host the web site of a game I made a decade ago. Believe it or not, people are still playing it :) For those interested I now work as a game developer at EA DICE, leading a team focused on memory, io, performance, team productivity and more.

Destruction II

A 2D two-player split screen action game :)

Kill Winamp

A really simple Winamp/computer timer. Very old but still popular :)

A step towards data-orientation (2011) PDF PPT 2010 PPT 2003

A talk given at Sthlm Game Developer Forum on how to incrementally make object oriented code more cache friendly.

The parallelism shift and C++'s memory model (2008)

Part 1 - A bird's eye view of desktop parallelism,
Part 2 - Zooming in on C++0x's memory model

The first part of the thesis is an overview of the paradigmatic shift to parallelism that is currently taking place. It explains why processors need to become parallel, how they might function and which types of parallelism there are. Given that information, it explains why threads and locks is not a suitable programming model and how threading is being improved and used to extract parallel performance. It also covers the problems that await new parallel programming models and how they might work. The final chapter surveys the landscape of existing parallel software and hardware projects and relates them to the overview. The overview is intended for programmers and architects of desktop and embedded systems.

The second part explains how to use C++'s upcoming memory model and atomic API. It also relates the memory model to classical definitions of distributed computing in an attempt to bridge the gap in terminology between the research literature and C++. An implementation of hazard pointers and a lock-free stack and queue are given as example C++0x code. This part is aimed at expert C++ developers and the research community.

Download pdf (about 850kb) Download code (about 20kb)

C++ talks

These are slides from some C++ related talks I've held. Game developers beware, many of them are not very applicable to console development :)

Generic programming introduction - An introduction to generic programming and a comparison with object orientation

Optional - Explains why an Optional<T> implementation is so useful, even for games

Static modeling - On avoiding bugs by keeping your program's state space as small as possible, by checking and typing up early

Higher order programming - Explains basic type safe implementation and how to use functional programming in C++. Game devs should perhaps check out FastDelegate and this post instead.

Boost candy - Boost intro and example usage of some boost libraries. These libraries are C++0x standardized by now.

Modern C++ workshop Part 1 and Part 2 - Slides for a workshop where I teached modern C++

RAII intro - Explains what the RAII pattern is and what it's good for