Areas of Interest

Computer networks, encryption and computer security, mathematics, free and open source software, algorithms, programming languages, and Unix system programming.

Previous experience

Automatic control, signal processing, time synchronization, algorithm design and implementation, TCP/IP, Secure Shell, TLS, Posix, Unix, Open Source, programming language design and implementation, object oriented programming, embedded software, client/server programming, XML & XSLT, encryption, finite state machines, SMTP, IMAP, HTTP, HTTPS, RTP, RSA, ECC, IEEE 1588, RTP, WebRTC, GNU, Linux.

Over the years, I've used many different programming languages. In roughly chronological order: Basic, 6502 assembly, Pascal, C, Common LISP, M68k assembly, Objective C, Python, Pike, Scheme, Emacs lisp, C++, tcl, awk, x86 and x86_64 assembly, CPU microcode, ARM assembly, Javascript, Java, OpenGL Shading Language, Verilog. Languages of choice are C, Scheme, and Pike. Long experience with development tools such as make, emacs, git, and automated testing.

As for human languages, my mother tongue is Swedish. Good command of written and spoken English. Beyond English, basic knowledge of Danish, German, Spanish, and Russian, and some knowledge of French and Japanese.


PhD degree in Telecommunications, at KTH. Thesis title: Window-based congestion control – Modeling, analysis and design.
Licentiate degree in Telecommunications, at KTH. Thesis title: Automatic control in TCP over wireless.
Master of science in Applied Physics and Electrical Engineering, at Linköping university. Thesis title: NCash – an experimental digital cash system.

Curriculum Vitae

2015 –
Working as software engineer at the Google office in Stockholm. Most projects have revolved around video and networking in the open source WebRTC library, and supporting various Google products using WebRTC. I have also worked with overall code quality and architectural issues in WebRTC, and deleted more than 100000 lines over 4 years, to reduce code complexity.
2013 – 2015
Worked at Southpole Consulting AB. Projects included:
2008 – 2012
Worked at Conemtech AB (when I started, part of Imsys Technologies AB, Conemtech was spun off as an independent company in 2009). Worked mainly with development of control and signal processing algorithms for IEEE 1588 time and frequency synchronization, occasionally involved in other development, e.g., writing CPU microcode for signal processing.
A two month contract at the KTH School of Computer Science, working on the GNU GMP library. First month spent mainly on integration and optimization of new code for computing the greatest common divisor. Second month spent mainly on new multiplication code based on small-prime FFT, including some highly optimized x86_64 assembly for the most importantant transform routines. Also published On Schönhage's algorithm and subquadratic integer gcd computation in the AMS journal Mathematics of Computation.
2005 –
Contributor to GNU GMP, a library for high performance arbitrary precision arithmetic. Main author of the greatest common divisor routines, using state-of-the-art subquadratic divide-and-conquer algorithm for large sizes. I have also contributed to multiplication and division.
2002 – 2008
Graduate studies at the Automatic Control group at the KTH School of Electrical Engineering (previously, the Department of Signals, Sensors and Systems), Stockholm. Research into applications of control theory to computer networking.
2000 – 2001
Worked full time at E-hand, as security officer and developer. Development was mainly for the Palm Pilot. I also spent a few hours a week working on free software.
1999 – 2000
Worked full time at StreamServe AB (now OpenText). Development included systems programming on Unix and Windows NT, security, XML, and Unicode support.
1998 –
Main author of GNU LSH, a free software implementation of the Secure Shell protocols, and the GNU Nettle low-level cryptographics library. The LSH project is currently mostly dormant, while Nettle is quite active, and it also used by GnuTLS. Contributed to RFC 4251 – 4254 within the IETF Secure Shell WG.
1996 – 1999
Worked part time at Idonex AB (now Roxen Internet Software). Worked on the Roxen web-server. Among other things, wrote its SSL (Secure Socket Layer) implementation.
1993 – 1996
Worked part time at the Mathematics department at LiTH (Linköping Institute of Technology). Taught several math courses for the engineering students.
1991 – 1992
Civil service, which included training as nurse and ambulance assistant, and a few months of practice at nursing home, hospitals and the ambulance service in Stockholm.
1990 – 1998
Studied Applied Physics and Electrical Engineering at LiTH. Branch of studies: Applied Mathematics.
1987 – 1990
Studied at Brännkyrka gymnasium, the science program.
Niels Möller