

Profile
Richard is one of the world’s most experienced Erlang developers. He has been programming in Erlang since 1994 as a masters’ student, as a Ph.D. student in the High Performance Erlang research group at Uppsala University, and as a senior developer at Klarna.
Richard has contributed to many parts of the Erlang standard libraries, compiler, runtime system, and the language itself, and he is co-author of the book ”Erlang and OTP in Action”. He has written several well-known open source tools, including the unit testing framework EUnit and the documentation tool EDoc which are used by most Erlang programmers.
He was one of the earliest employed programmers at Klarna and worked there for 11 years, mainly on handling the explosive growth from a dozen to over a hundred developers, and a hundred times more code, while the system maintained availability around the clock and was being updated daily.
Richard has presented his work at many academical conferences and workshops and received the ”Erlang User of the Year” award as a member of the HiPE research group. He has taught distributed programming and compilers at Uppsala University.
He had a vital role in the development of Simics DML (Device Modelling Language), now Wind River Simics DML. He has also worked on C compilers for both ARM and RFID chips, written floating point libraries in assembler, and has long experience of assembler programming for 8- and 16-bit micro processors.
Specialized in
- Compilers
- Domain Specific Languages
- Virtual Machines
- Parsers
- State Machines
- Static Analysis
- Refactoring
- Modernizing Legacy Code
- Version Control
- Build Systems
Example Projects
December 2022 - April 2023
Cloud Provisioning, Happi Hacking AB
Remodelled the HappiHacking company cloud solutions using Infrastructure as Code.
Tools: AWS, Docker, Terraform, Ansible, bash, Make, git
May – December 2021
Frontend/Web Designer, Happi Hacking AB
Rebuilt the HappiHacking company web site from the bottom up using modern techniques for web development and design.
Tools: Eleventy, Nunjucks, JavaScript, CSS/SASS, SVG, HTML
March – April 2021
Java Developer, Major German Telecom operator
Prototyped an OAuth manager for connecting third party services to social platforms. (Part of a larger long term project around services for home automation.)
Tools: Java, Spring Boot, OAuth
2020 - 2021
Advisor and Compiler Developer, WhatsApp
Prototyping a strictly typed dialect of Erlang.
Tools: Erlang, Scala
Previous engagements
2019 - 2022
Founding Member, Erlang Ecosystem Foundation
2013 - 2019
Founding Member, Erlang Industrial User Group
2008 – 2019
Senior Developer and Architect, Klarna AB
- Developed a domain specific language that became the foundation of the credit assessment system.
- Developed a system of hierarchical state machines for specifying time-based events on invoices.
- Developed a system for heuristic matching of addresses.
- Restructured the system to allow many teams to work on the code in parallel.
- Rewrote the build system for faster and fully parallelized builds.
- Drove the transition to package-based code deployment.
- Drove the adoption av LevelDB as database backend.
- Submitted many upstream patches to Erlang/OTP.
- Handled the transition from Subversion to Git.
- Managed Open Source questions.
- Erlang community contact person.
- Company representative in the Erlang Industrial User Group and founding member of the Erlang Ecosystem Foundation.
Tools: Erlang, Git, Make, Bash, C, LevelDB, Svn
2006 – 2008
Compiler Developer, IAR Systems
- Code generation and floating-point library routines for RFID chips.
- Led the transition to modern systems for version control and issue tracking, developer tooling, and automated builds and backups.
Tools: C, C++, Ruby, Visual Studio, Subversion, Jira, CMake
2004 - 2005
Developer, Virtutech
Development and productification of Simics DML (Device Modeling Language), a domain specific extension of C for modelling hardware components. Virtutech was later bought by WindRiver/Intel.
Tools: Python, C
1998 - 2004
Ph. D. Student, Uppsala University
- Partial evaluation and inlining of Erlang programs.
- Abstraction of syntax trees and source code level transformations.
- Design and specification of Core Erlang.
- Data flow analysis, control flow analysis and type analysis on Core Erlang.
- Teaching: distributed programming, compilers, and object oriented programming in Java.
Tools: Erlang, C, Perl, LaTeX
Open Source Software
- EUnit, a unit testing framework for Erlang.
- EDoc, a Javadoc-like documentation system for Erlang.
- Syntax Tools, an abstraction layer for metaprogramming with Erlang syntax trees.
- Speccylator (1993-1997), a Z80/ZX Spectrum emulator for Amiga/MC680x0.
Talks
- The art of the live upgrade - 10 yrs of evolving a live system, Code BEAM SF 2019
- Secrets of the Erlang Beam compiler, Erlang & Elixir Factory SF 2017
- Erlang Metaprogramming Made Easy, Erlang Factory SF Bay Area 2012
Publications
- Erlang and OTP in Action
- (Logan, Merritt, Carlsson)
- Erlang's Exception Handling Revisited
- (Carlsson, Gustavsson, Nyblom) ACM Erlang Workshop '04, Snowbird, Utah, Sep. 2004.
- Message Analysis for Concurrent Programs Using Message Passing
- (Carlsson, Sagonas, Wilhelmsson) ACM Transactions on Programming Languages and Systems, Volume 28, Issue 4, pp 715–746. (Extended version of the SAS'03 paper.)
- Message Analysis for Concurrent Languages
- (Carlsson, Sagonas, Wilhelmsson) In: Cousot, R. (eds) Static Analysis. SAS 2003. Lecture Notes in Computer Science, vol 2694.
- Parameterized Modules in Erlang
- (Carlsson) ACM Erlang Workshop '03, Uppsala, Sweden, Aug. 2003.
- Hierarchical Module Namespaces in Erlang
- (Carlsson) ACM Erlang Workshop '02, Pittsburgh, USA, Oct. 2002.
- An Introduction to Core Erlang
- (Carlsson) PLI'01 Erlang Workshop, Firenze, Italy, Sep. 2001.
- Core Erlang 1.0.3 Language Specification
- Extending Erlang with structured module packages
- (Carlsson) Technical Report no. 2000-001 from the Department of Information Technology, Uppsala University, Jan. 2000.
- Towards a Deadlock Analysis for Erlang Programs
- (Carlsson) Uppsala Master's Theses in Computing Science 108, Apr. 1997.
Education (by selection)
1998 – 2004
Postgraduate Student, Uppsala University
1990 – 1997
M.Sc. Mathematics and Natural Science, Uppsala University